Add public semantic error reporting

Adds the following public member functions to allow reporting semantic errors with location information.
>bool Reader::pushError(const Value& value, std::string msg);
>bool Reader::pushError(const Value& value, std::string msg, const Value& extra);
>bool Reader::good() const;

Closes issue #57. Note that the `pushError` functions return boolean values indicating whether the error was added successfully.