Factored out the type implication stuff and made it more robust
May now use native constructors and sub-format types
Response can now be created with headers and no data
Add 'strict' property to models; when set to false, Model.cast will not throw when
it encounters a missing required parameter. Defaults to true
Make enums work for both integers (index into the array) and strings (value in the array)
You may not use strings of integer values in an enum. For example, ['1', 'foo'] is invalid
Pass along options with Model.cast and DataType.cast
Encoding is now an option setting
New option: 'useEnumKeys'; if true, DataType.cast will use the enum keys instead of indices