Dbarch/mixed ms router

STUD-600: making mixed ms capable of front ending all modulestores for most operations including CRUD.

To impl this I had to impl:
* add a hash function to Locator
* close mongo connections after each test
* test_location_mapper: better mock the django dependencies and create a reusable unittest superclass for those needing a loc_mapper w/o django dependencies
* move some behaviors up from MongoModulestore to ModulestoreWriteBase
* translate_location: add ability of caller to force the block_id name if there's not an existing map
* ensure loc maps exist to each course in xml modulestore in order to enable reverse mapping to course id so that mixed can select the xml modulestore
* convert test_mixed_modulestore to using unit test superclass and asserts
* use ddt in test_mixed to test w/ split v old mongo using same tests
* replace save_xmodule with update_item
* move create_course, create_item, update_item, & delete_item to mixed modulestore (and MSWriteBase)

These should perhaps each be in different commits or even PRs (but PR chains take so long to get reviewed and merged). Right now this PR is a bit of a kitchen sink and the commits are not well labeled, but the content is here. I'll try to reconstruct the commits into logical units, but my last attempt ended up w/ too many dependencies making each more encompassing.

@cpennington @cahrens @singingwolfboy Please review or delegate to an appropriate reviewer (and let me know).