refactor level columns into properties hash

High-level features of this branch:
- Data migration moving level.* data into level.properties.* serialized JSON fields, and modifying the DB schema to remove the columns.
- SerializedProperties mixin added to Level that overrides setter/getter methods of the properties fields, so that the serialized properties fields appear exactly like database columns to most of the Rails ActiveRecord functionality.
- Refactoring the level editor form using view partials to clean it up a bit.
In the old setup the `maze` column was being used in a special way, the parsed data passed to Blockly was already located in `properties['maze']` the column just stored the intermediate unparsed data returned by the editor form. So on a reverse-migration we wouldn't want to copy this data back into the column.