Use read replica and cache for top scores

The leaderboard feature should be able to tolerate some latency in the search results.  This PR changes the `get_top_submissions()` API call to use a cache and the read-replica by default.  The change is backwards-compatible and will require no modifications to the leaderboard PR in edx-ora2.

@stephensanchez please review.
There are already tests for min/max values of top scores.  In terms of arguments of the wrong type, I think it's safe to follow the Python convention of raising a `TypeError` if the argument isn't an integer.  If/when we wrap this in a RESTful service, then the HTTP request handler would be responsible for validating types before calling this function.