Refactored the SinglePageApp, Query, and Repository. They should all imp...

...liment interfaces correctly. Also did some refactoring for seperation of concerns. This made tests flow better and I could make better use of FakeItEasy.