Test Refactoring to use "Test Doubles"

This is used by the OAuth PR, but I wanted to separate it out so that it wasn't mixed together.

Note: UsersServiceFacts was renamed to UserServiceFacts. Sorry for the giant remove/readd diff, try browsing individual commits for an overview.

This will go in as part of the OAuth PR (it makes more sense when seen as "refactoring the tests I touched"). DO NOT Merge this PR