Made exceptions reasonable in macros and readers. (cherry picked from bryce's branch)

Readers and macro deserializers to throw MappingExceptions and
ParserUtil.ParseExceptions where appropriate.
More Unit tests.
Some code cleanup.
Make non constructors better

Use option reader for primitive types to avoid exceptions for
performance reasons.
Make non constructor params go through options

Added tests for this as well.
merge jsonast from cherry-pick merge