use JSON patches to represent question changes

JSON patches should be more efficient as a way of representing changes, instead of storing the whole JSON object for each version.

Question versions now work as a linked list (in javascript), so navigating back or forward one change is easy, but switching to an arbitrary version is hard.

This is all still happening only in javascript - need to add some models to the database to keep changes between page loads.