Use JSON enum to help with type inference

This branch is suppose to speed up compile time by using an `enum` to describe the JSON.
Should the default be to ignore (and null) types we don't understand or to return some kind of error?