Studio/uses mixed modulestore

https://edx-wiki.atlassian.net/browse/STUD-1540

Here is a summary of the changes we made as part of this story:
1. Updated Studio and LMS so all callers, with a few exceptions, go through the `MixedModulestore`.
2. Changed the configuration setting format so the Stores listed in the Mixed configuration can be ordered by preference, via a `list` rather than a `dict`.
3. Updates the settings for all Test code so they should all go through Mixed, unless they are explicitly testing a particular store.
4. Introduced a new Setting called `MODULESTORE_BRANCH` that specifies the default "branch" (draft or published) to check for relevant modulestore methods.  Currently, the `DraftModuleStore` uses this setting.  Eventually, the `SplitModuleStore` will also honor it.
5. Updated the `MixedModuleStore` API and all their callers to take in the `user_id` for all Edit operations.
6. Improvements to the following APIs:
  - Publish - so it automatically publishes all the downstream children.
  - Delete - so it does the "right" thing depending on which revision is deleted, etc.
7. Since (most) test code now go through the Draft store, some tests needed to be updated to Publish their newly created items if they assumed they would be in that state.

Note to reviewers: The implementation of `compute_publish_state` is moved down to the lower layer as it is modulestore specific.