Completely reimplement browse system with the following broad objectives:
1. Improve performance, especially with very large data sets where current browse is virtually unusable.
2. Support browse engine plugins to allow for different back-ends to be used. Possible back-ends include ElasticSearch, Sql query-based (what we have now) and an integrated index-based engine. The idea is to, as with search, trade off simplicity vs. performance with different back-ends.
3. Improve code maintainability. The current BrowseEngine is a tangle.
4. Support additive browse. The current implementation supports only faceted "subtractive" browse. As you drill down you get fewer and fewer results. Additive browse adds results with each successive facet choice.
5. Improve support for aggregations.