Add public semantic error reporting
Closes #57