I don't want the API to depend on CouchDB details, both so that it is easy to swap in ES or a mock, but also just to keep some abstraction boundary. So I did things thing way because the views only seem to work for `ApplicationBase` but I need the methods from `Application`. And it is only in `get_app` that the usual "deserialization of registered subclasses" pattern is implemented, so I used that. Longer-term, that pattern should move into `by_domain` but I didn't want to refactor `app_manager` right now.