User pages in the admin section

I've pulled out the merge of #270 so it can be merged with the newly-added tests all in one go.

@alastairs: I'd like an opinion on some of these, as a few of them feel like I'm testing just the implementation.
I think your alternative test is a bit better than the original test. J B Rainsberger [talks](http://www.infoq.com/presentations/integration-tests-scam) about two kinds of tests with mocks: collaboration tests and contract tests. IMHO, the alternative test above is a Collaboration test: it checks that the SUT delegates to the mocked service in an appropriate manner. A separate Contract test would, I think, ensure that the mock is configured to behave according to the contract defined by the service interface. In comparison with the original test you wrote, I think this combines both Collaboration and Contract test styles and so is testing more than one thing.

(PS: the video I linked to above is worth watching when you have some time. [This article](http://www.infoq.com/news/2009/04/jbrains-integration-test-scam) sort of summarises some of the key points, with links back to JB's original blog posts, but isn't as good as the video. I would be interested to know what you think about the content of the video, if you get to watch it.)