Add handling for default keys that permits for bad names. Disallow keys starting with capital letters, as they'll run afoul of Ruby's naming expectations.
Add #dynamic_keys and #defined_keys to let developers distinguish defined schema from derived schema. Use a less clever idiom for 1.8-compatible hash filtering.