Improve rest api

Tons of changes were made to the website interface:

- Changed all (I hope) instances of urls to use reverse() for looking up the API

- Accessing the list of games is now GET /game/
- Accessing a game with id <gameid> is now GET /game/<gameid>
- Accessing a map with id <mapid> is now GET /map/<mapid>
- Saving a map to <mapid> is now POST /map/<mapid>
- Saving a new map without a <mapid> is now POST /map/

- gamens.py is now sockets.py (if gevent-socketio gets updated, this will be compatible with the future version)

- game.views and map.views now contain class-based views, which makes it easier to separate GET and POST requests and handle edge cases
- Moved Game controller methods to models.py, which makes them easier to test

- Removed all of the login_required decorators, since it was very repetitive
- Added LoginRequiredMiddleware, which basically puts login_required on every request except the ones specified in settings.LOGIN_EXEMPT_URLS (which can handle regexps) and settings.LOGIN_URL

- Tests were modified to support the new API

- Changed the jasmine tests to use the new api (although the tests correctly use the api, it is unable to access the website because the new login required middleware redirects it back to the homepage)

- Aborted writing tests for the new API... the map URLs were already tested pretty thoroughly as far as I know and the game views are hard to test.