Mapping changes: inherited fields and StringCoercible types

Two changes:
1) Support for (optionally) including mapped fields from parent classes.
2) New StringCoercible interface: Makes it possible to map any field that supports a new StringCoercible interface which allows the field value to be coerced to and from a string.