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

I'm not sure why there was a need to handle course keys without a run. I had to change this code because it had an unintended side effect: it was stripping the branch information out of any `course_key` passed through it.

So if I'm using studio to edit a content library and the studio client-side javascript made a REST API call to do something like "duplicate XBlock `block-v1:ProblemX+PR0B+2014+branch@library+type@html+block@519665f6223ebd6980884f2b`", the fact that the REST API handler was using this "add course run if necessary" code meant that the `branch@library` part was getting stripped out, and then the request would fail with an `ItemNotFound` error. (It would look for `block-v1:ProblemX+PR0B+2014+type@html+block@519665f6223ebd6980884f2b` which doesn't exist).

So I had to change this method so that it doesn't have that side effect and its behaviour more closely matches its docstring.