Added a Serialisable super class to do automatic json encode/decode
Switched back to simple json Map-based encode/decode in the model.

This removes the need to import the mirrors and for dart:convert. It means
the model is not tied to Json, but is defined in terms of Maps. (Which can
be easily converted to/from Json.)