Initial commit
implemented a Word model and a static Bingoboard
added models for Game, BingoBoard, BingoField and changed the Word model
added auto-creation of BingoFields, extended view to create and use boards

* When there is no board, create one, redirect to its url, and set
  bingo_id as session-value
* When there is an bingo_id in the url, show that board, if it exists.
* When there is a bingo_id in session when visiting the url without
  bingo_id, redirect to this board.
* when a game is older than GAME_HARD_TIMEOUT minutes, or unused for
  GAME_SOFT_TIMEOUT minutes, start a new game, and assign new boards for
  even for users with a board_id in the session.
fix for python 2.6: total_seconds() -> seconds
save ip for BingoBoard
when no bingo_id and no session_id are given, try using the ip
assert BingoBoard has game and user unique_together

assert in the save method, that either game,user or
game,ip are unique together.
style
word list on the bingo page
style and headlines
Explict creation of BingoBoards, reclaiming them.

* Users now need to create a BingoBoard with an optional password.
* Users can reclaim their BingoBoard, as long as its valid,
  even without cookies and with changed ip, by using the password.
fix for broken link
use tz for model dates, show dates in GameAdmin
all_middle_words now contains the middle words

* fix: all_middle_words now filters for middle=True
* changed word access, to filter before order_by("?")
moved views._get_game to models.get_game
BingoField is now the primary Model for a Word in a BingoBoard

* BingoField can now have a position=None, which means its not on the
  BingoBoard, but its associated with the BingoBoard
* BingoField now has a vote field, which can be
  positive/negative/neutral not voted)
redirect from reclaim page to the current board, if there already is one.
removed inline, as now each BingoBoard has every Word as BingoField
use a salted hash for the passwords