Specifically:
* Test that a user cannot move an opponents pieces
* Test that a user cannot move if it's not their turn
* Test that a move is reflected on the opponents view
Now we're only storing the pieces keyed by the piece position rather
than storing the entire board as a set of nested Maps. This makes moving
pieces much easier. We're also now storing the position as a pair of
array indices which should make calculating the possible moves easier.
PhantomJS does not implement `Object.assign` which is how we were
updating the state immutably. I've switched it over to use the
ImmutableJS library instead.