Feature/unguessable urls

phew. 

Fueled by hardtimes, here's the 3 week branch.

Here's the story:
https://www.pivotaltracker.com/story/show/38529483

It involved a _lot_ of code, but here are the main changes:

1. refactored the redis persistence code into a base class
2. added a player model which gives a unique unguessable URL to each player
3. added an invitation model which facilitates player1 getting player2 her player URL without player1 ever seeing player2's player url.

Tests passing. The new acceptance tests of interest are here:
https://github.com/michaelkirk/weiqi/blob/feature/unguessable_urls/spec/acceptance/board_features.js#L218