Don't disqualify objects prematurely
Tidy test suite
Rename number constants
Rename JSON type constants
Group errors into categories

For now, these are limited to UserErrors, SyntaxErrors and TypeErrors.
Expand the test Unmarshal test suite
unmarshal.go -> decode.go
Add support for optional struct fields