reuseable pagination, and reorganizing views

@cookjw 
These commits make it fairly easy to add pagination to new views by using a new `paginated_context` helper and `paginated_view` decorator (see the `home` and `tagged` views for example usage), which will come in handy as/if we decide to add more views the require pages of things. (But I didn't add any new tests because I didn't feel like it.) Also, in the middle of this, I felt like views.py was sufficiently bloated and unpleasant to work in that I split it up into multiple files. Please merge if you find these changes agreeable.