Remove an erroniously-committed file

This appears to be part of an alternative version control or backup system.
The file is 630KB, and should never have been committed.
Update gitignore to no longer ignore all hidden files

This allows important changes to ".gitignore", ".gitattributes", etc.
files to be detected.

Any hidden files generated by an IDE should be ignored more specifically.
Add a gitattributes file

This should help to ensure that CRLF line endings are always automatically
removed before a commit.
Convert CRLF (Windows-style) line endings to LF (Unix-style)
Replace tab indentation with spaces

Tabs should not be used anywhere. All Python, CSS, HTML, and other code
files should indent with 4 spaces per level. Javascript files are
currently inconsistant, with either 2 or 4 spaces per level.
Ensure text files have a trailing newline

This is required by POSIX.
Strip trailing whitespace from text files

A pre-commit hook should be added in the future to enforce trailing
whitespace and other basic style checks.
Merge branch 'clean-formatting'

* clean-formatting:
  Strip trailing whitespace from text files
  Ensure text files have a trailing newline
  Replace tab indentation with spaces
  Convert CRLF (Windows-style) line endings to LF (Unix-style)
  Add a gitattributes file
  Update gitignore to no longer ignore all hidden files
  Remove an erroniously-committed file
Add a new default JSON encoder that can process BSON objects
Add 'to_son' method to model classes
Change Role to GroupRole, and add UserRole

This also auto-creates a UserRole when 'user_role' is accessed, if one
doesn't already exist.

The alternative to storing both roles in the same list is to make
'group_roles' and 'user_roles' a real field and 'roles' return an
ImmutableList. It is likely that 'roles' will be read more often
than 'group_roles', so it's probably more optimal to avoid
constructing a new ImmutableList each time 'roles' would be accessed.
WIP: APIv2

Closes #41.