Discard changes rewrite.

STUD-1860

@andy-armstrong and @benmcmorran Please review.

My sandbox has the final version of this. http://studio.cahrens.m.sandbox.edx.org/
That's a really interesting idea about returning the xblock info from the update operations. That would save us having to do a sync on each update too. However, it might be tricky because we update an xblock, but then we sync the entire section. As you say, an interesting idea for the future.