add `Key()` method to the `Handler` concept

For more details see: https://github.com/miloyip/rapidjson/issues/132

This commit tries to minimize the required code changes and forwards the `Handler::Key()` calls to `Handler::String()` wherever possible in order to not break existing code; or at least not code deriving from `BaseReaderHandler` when implementing a custom `Handler`.
Adding duplicate code via a template parameter will lead to binary bloat due to the duplicate implementation for each instantiated `parseFlags` value.  I would prefer a parameter to `ParseStringOrKey` (it's internal anyway).
Why not simply keep it as `ParseString` and add an optional flag:
````cpp 
void ParseString(InputStream& is, Handler& handler, bool isKey = false) {
````