Use abstract during parse

This refactor removes many of the back and forth conversions between erlang abstract format and string representation. This means there's much less effort in keeping the records as they were intended, especially during a 'from_json/1' call, where the default record is needed.

This means making a module from just a record definition is less feasible. Since this is a feature that is on its way out anyway, I'm okay with that.

Also cleaned up some whitespace.