Ashley and Josh Refactor Some Code

This includes a minor change to a test which now relies only on what the user can see in a browser, as well as using  [extract class](http://www.refactoring.com/catalog/extractClass.html) and [constructor injection](http://martinfowler.com/articles/injection.html#ConstructorInjectionWithPicocontainer) to make random username generation easier to test and have `User` more closely follow the [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html).

/cc @ashleytbasinger