Change implementation of TryGetService based on DI behavior ChangeDetector

Or: Karl says, "You don't have to do it straight away, but just do it before it gets really bad."

Issue #900. Note that due to Dependency Injection Issue #127 the methods are still present in addition to new required service methods such that TargetInvocationException is unwrapped thereby removing this implementation detail from the call stack. This then simplifies the fix in #937.