Make create_item return the xblock as obtained from get_item.

Needed so that all editing info fields will be populated. We had made this change on the bulk publishing branch (before the code was moved from mixed modulestore into the individual modulestores).

Note that this is also consistent with the implementation in split.py. @nasthagiri and @cpennington please review.

As to the test_mixed_modulestore change, here is an e-mail from @nasthagiri describing the issue:
_______
The problem is that the implementation of .replace is different between SlashSeparatedCourseKey and CourseLocator.  If you look at the _key member in the 2 locations, you'll see the underlying key object that is used.

The old implementation in SlashSeparatedCourseKey had overridden all attributes, including "branch" when .replace was called.  However, the new implementation in CourseLocator keeps the attribute values, including "branch".

So it seems one would NOT run into this issue if they happened to have used a SlashSeparatedCourseKey.

The location variable in create_item in base.py happens to be a SlashSeparatedCourseKey.  But when you changed it to return the return value of get_item, it happened to load the xblock, which creates a CourseLocator.

In the end, I believe the test in test_mixed_modulestore needs to be updated to be branch_agnostic.

@cpennington , here's another case of a hard-to-debug issue having to do with comparison of Key objects - one having a Branch specified and the other not.  It just happened to work before since SlashSeparatedCourseKeys implemented .replace differently (only capturing the org/course/run from the previous object).
Oh wait, let me double-check on using the return value from update_item. I misread your comment.