handle local name conflicts in inject

inject does not allow two unnamed instances of the same type. the way it
was doing this was only considering the local name. instead we just use
the reflect.Type for comparison like the reflect docs suggest. Also
improved the error message in this case to print the fully qualified
type name instead of just the local one.
use stock travis setup