Fix service locator implementation logic.

If callers specify an implementation then it's the return type they're
concerned about, not the class providing it.

Change-Id: I9d2aa23de47373323cabb362042995f822cd9311
Reviewed-on: http://gerrit.dmdirc.com/3284
Automatic-Compile: DMDirc Build Manager
Reviewed-by: Greg Holmes <greg@dmdirc.com>