(WIP) Studio library view - Do not merge, for internal review

This change is to *not* remove branch information

This is related to your last question. Here's why I had to add `remove_branch=False` throughout this file:

A lot of the methods on the `MixedModuleStore` have that modulestore's [`strip_key` decorator](https://github.com/edx/edx-platform/blob/2ebed452ff21633e5c2da0c3fb17283deb060ef1/common/lib/xmodule/xmodule/modulestore/mixed.py#L27). As a result, if you make any request to the modulestore involving an xblock on a specific branch, it will return results with the branch information stripped out. To me, that's a strange thing to be doing by default at such a low level, but I assume this was done to make working with draft/published branches easier. Unfortunately it makes life harder for our library use case.

For example, it you retrieve the library's root XBlock using `modulestore().get_item()` and you request the XBLock  
```
block-v1:ProblemX+PR0B+2014+branch@library+type@library+block@library
```
then it will find and return the XBlock, but that XBlock's `location` property will say:
```
block-v1:ProblemX+PR0B+2014+type@library+block@library
```
so the returned block ID is actually wrong and doesn't exist.

This was causing all sorts of errors with studio's RESTful XBlock editing API when trying to use the library branch. However, thankfully the strip_key decorator is designed so that the end user can override its behaviour whenever necessary by passing in `remove_branch=x`, which is what I needed to do.

I *think* this decorator on the modulestore level didn't affect the existing studio code because the default `draft-branch` was implied for all CMS changes, so it doesn't care if the branch info is there or not. As a result, I think this won't affect the normal courseware editing. However, I will definitely need to do some careful testing to be sure.