BaseSearchQuery: run() / build_params() simplification (see #925)

* run() now returns results as as documented, which helps subclasses
* Add BaseSearchQuery.post_process_results() hook to view / alter
  results before standard processing
* Move search param override (run()'s kwargs) into build_params()
  for consistency
* Rename internal variable in build_params() from kwargs to params
  for consistency with external name and to avoid confusion
Solr: remove redundant run() / build_params() logic (see #925)

After refactoring BaseSearchQuery run() and build_params() the SolrSearchQuery's implementation for those methods needs only the
custom stats and order_by logic.
ElasticSearch: simplify query run() / build_params()

After refactoring BaseSearchQuery run() and build_params() the ES
search query needs only the custom sorting logic
Core tests: confirm BaseSearchQuery.run() signature

* Rename the previous test_run() test to test_get_results() as that's
  what it actually calls
* Add a simple mock test_run() which confirms that the search backend's
  results are returned from the search query's run() method
* PEP-8 import cleanup (isort)