[WIP] Argument type validation with user-friendly error messages

I can see value in being able to modify the JSON types mapping. A user may want to support custom types, or use different nomenclature.

`TARGET_MAP` is not actually a constant--it can be modified via the `Parser.target_handler` decorator. I realize now that I made a naming convention error when making it all-caps. I will rename it to all-lowercase or `__target_handler__`.