Refactor all the filter objects and make API a singleton

All classes now implement from_hash, and each model is responsible knowing it's own hash schema.

I'm also no longer passing an api object around, it's now a single instance of FinderApi (which no longer stores a slug) living at FinderFrontend.finder_api.

FinderApi implements the same interface as GdsApi::FinderApi, so it can easily be switched out when the stubs aren't needed any more.