Multiple changes - see points

* Add Plan and Product
* Move Property stuff outside to PropertyMixin and cast the value type to the
* one stored in db - done via hybrid_property.
* Make a custom Propery model derived from UserType that just passes the value
* along.
* Expose Products & Plans in API
* Make *_info be the appropriate type if there is none instead of None.