Marshaller changes

- individual marshallers for each of the primitive types
- unified data marshalling (no distinguishing between primitive and
object props)
- any marshaller can implement the "readDefault" function