can ignore write-only fields, clean up, options

- several components are now configurable via the config passed in
- added optional support for automatically ignoring 'unknown
properties' during deserialization when we can be pretty sure that
it is normal for that same object to write those fields during
serialization. off by default to discourage spurious serialized
data.
- reorganized a bit and gave some classes more specific names