Add schema support

Schemas provide a much more flexible way to encode & decode objects. By
allowing the API user to map a certain property to another name,
minimizing and compatibility with external APIs can be achieved very
easily.

Add JSAutoEncodedObjectSchema, a schema class providing convenient
constructors from common datatypes, such as arrays and dictionaries,
and built-in minimizing support.

+encodingExcludedPropertyNames is now deprecated in favor of schemas.

Update readme to reflect these changes.