Issue23errorcode

Error messages for parsing are changed to error code (`ParseErrorCode`).
Therefore, the error codes are possible to be handled by code instead of human.

Also, the text messages are provided optionally. This has two advantages:
1. If an user does not need the text messages they are not linked into their program. Program size can be reduced.
2. Users can localize the messages, either using our mechanism or roll out their own.

Unit tests are modified to verify the error codes of synthetic error cases.
Examples are modified for API changes.

API changes: 
* Removed `const char* Reader::GetParseError() const`.
* Added `ParseErrorCode Reader::GetParseErrorCode() const`.
* Modify semantics of `RAPIDJSON_PARSE_ERROR`
* Added `RAPIDJSON_PARSE_ERROR_NORETURN` macro. User should customize this macro instead of `RAPIDJSON_PARSE_ERROR` in the past.