Initial implementation

For errors starting with "Undefined" or "Uninitialized", we will raise
a NullPointerException, for errors with "Missing" in the beginning, an
IllegalArgumentException, and for error ending with "string conversion"
we will throw ClassCastExceptions

Good enough for the moment, though possibly risky to catch unintended
errors
Use lang.IndexOutOfBoundsException for non-existant array / string offsets
Also handle maps
Merge pull request #43 from thekid/rfc/0291

Stricter error handling