converted use of Field to new FieldModel to allow us to capture more information and allow users more customization.
moved ClassModel and FieldModel into their own package. Created tests and wrote the necessary infrastructure to get existing tests to pass.
added in top-level CodecRegistry as well as the necessary infrastructure
to build up ClassModels from conventions.
added in support for a CodecSourceContext to allow the encapsulation of cyclic resolution detection as well as shorten parameter lists.
refactored the manual mapping code, added some more mapping methods, and added some tests.
adding tests for encoding classes.
added decoder tests.
changed the names of some of the fields in FieldModelBuilder to be more closely aligned with what is happening.
added Lazy<T>, Factory<T>, LazyCodec<T>, and tests.
changed cycle detection to use a lazy codec instead of throwing that cycles aren't allowed.
corrected the order of of source registration to allow for later sources to override earlier ones.  Also changed the method name of CodecSource.
added ability for CodecRegistry to be used as a source of another registry.
broke dependency of CodeWithScopeCodec on Codecs.
cleanup after rebase.