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.

Change-Id: I51e572dc98088733eca15c35ee6d0bac991c5da7
Signed-off-by: Robert Varga <robert.varga@pantheon.sk>