Quick script to poke the devserver
Test that control of locations are changing after update_player_positions
Pull team assignment into its own method

Extracts team assignment into _assign_team so that I can test it more directly.
This came about because I noticed an apparent bug when testing the sim which
caused every player to be on team green.
Display correct team instead of 'up for grabs' all the time

Fixes a basic template error: locations have .team, not .controlling_team.
Render correct player and information in the template

I forgot to update the template when I created the Player() class and therefore
the template was not rendering information about individual players correctly.
Update snapshot tests to check db for the returned id
Post arbitrary JSON with sim.py

Enhances the sim with new args to allow me to use it as a command line tool to
post an arbitrary json string to the devserver repeatedly. New arguments:
- -j/--json: json string to send to the server. Checked to ensure it parses.
- -w/--wait: wait time, in ms, between requests.
- -n/--number: number of times to send the request
Abort with status 422 on valid json in an unexpected format

Previously I returned a json object with status: "failure" on this error, but
that behavior made me incorrectly assume some requests I made with sim.py
were OK when they were in fact malformed. In sim.py I had just checked if
the status was 200 originally and didn't actually check the return status. It
seems quite likely that other people would do the same, so I'm making this
error more RESTful.

I decided to use error code 422 Unprocessable Entity, stealing a page from
WebDav even though this isn't WebDav. Twitter uses the same error code for
when profile banners POSTed to them can't be processed correctly, so it
seems like a borrow that is at least with precident.

The validation of the expected format only checks that we're getting a list of
things. I should validate that we have the expected entities
(user, area, x, y, z, button) in each element but that can wait.