Scope filtering is currently hardcoded to the exchange
use case. In order for future work to rely on boilerplate
rather than re-writing the full filtering logic on each new
type, as much of that code as is possible has been moved
into a generic toolset.
Centralizes as many of the exchange scope funcs as
possible into scopes.go. Ensures exchangeScopes comply
with the scoper interface. Reshuffles some test helper
code in selectors to a centralized file.
Introduces selectors/scopes.go, which is the base file for
managing service-agnostic scope logic. Funcs like "isAny",
"contains", "getValue" and etc are expected to be housed
here, so that service instances only need to provide thin
wrappers, mostly typecasting, around their behavior.