Add invmap example
Added a way to arrays to report conversion errors
Add a way for Maps to keep track of conversion errors
Use invmap for something in tests
Add missing case for invmap for DisjointUnionDef
Add fail to Result monad instance
Add a way to handle semantic errors in object and tuple definitions
Implement error handling for DisjointUnjsonDef and TupleUnjsonDef
Improve tests to match recent changes
Use more of Applicative and less of Monad for Result
Use paths in error reporting that are post-prefixed after issue is detected
Improve error messages when reading in disjoint union
Changed error throw reporting into simple error call, error handling is hard