AI-579 Completed extensible type serialization for forms

Summary of substantive changes:

- Introduced FieldValue interface and implementations, which parallel the
  FieldType classes.

- FieldTypeClass know how to deserialize a Record into a corresponding FieldValue type

- The FormInstance class now serves as a wrapper over a PropertyBag that handles serialization/
  deserialization of field values.

This gives us a bit more type safety that just passing around raw Object references, and ensures
that we can add new types that can serialize themselves, keeping all this type specific stuff
out of the guts of the FormBuilder/Form viewer.

TextType and BooleanType are the exceptions: they serialize directly as Strings and boolean
respectively.
Merge branch 'version4' of github.com:bedatadriven/activityinfo into version4

Conflicts:
	core/model/src/main/java/org/activityinfo/model/type/FieldType.java
	core/model/src/main/java/org/activityinfo/model/type/NarrativeType.java
	core/model/src/main/java/org/activityinfo/model/type/geo/GeoPointType.java
	core/model/src/main/java/org/activityinfo/model/type/primitive/BooleanType.java
	core/model/src/main/java/org/activityinfo/model/type/primitive/TextType.java
	core/model/src/main/java/org/activityinfo/model/type/time/LocalDateType.java