Big refactor of compound types ModelType and ListType. The declarative pattern has been copied from fungiforms (@mitsuhiko). Getters and setters from the model instances is carried out by a FieldDescriptor, which makes the Type implimentations cleaner. Types should now be testable without classes.