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`.
It's always a tradeoff.  The increased program size will lead to I$ pressure for a very small anticipated performance benefit.