Improve InjectionKey performance

As it turns out we put these into a HashMap, so not dispersing on class
name is actively hurting us. The trade-off here is between hashCode()
performance and its effectiveness.

The design of this class called for Strings to be used as identifiers,
and hashCode() of strings is generally slow. As it turns out, though,
all the strings used were derived from classes -- which is good news.

This patch switches to using Class<?> objects as identifiers, as they
have fast hashCode/equals and the lookups are equivalent.

(cherry picked from commit 87fdc8efcfbce4d56da5377e7448e0857f492392)
Signed-off-by: Robert Varga <robert.varga@pantheon.sk>
Signed-off-by: Michal Rehak <mirehak@cisco.com>
Change-Id: I4188e349b381f8694d5682d9f15206ed58b9512d