Fix caching/marking of default values for mutable fields

Also improves field defaults (so that they are deepcopied if they are
mutable, and not otherwise), adds a suite of tests of the fields api,
and cleans up handling of mutation in the presence of the various field
caches.
Merge pull request #76 from cpennington/fix-mutable-defaults

Fix caching/marking of default values for mutable fields