perf(session): NeDB session store
refactor(Tournament#log): better logging function

Single logging function for the entire back-end: Tournament#log. The
function persists the logs to disk with nedb-logger, and prints debug
messages to the console.
refactor(Tournament#log): split type argument

Function now has two arguments: `topic` and `name`, to allow for partial
application in other modules. For instance, in the Ring module:
`this._log = tournament.bind(tournament, 'ring');`
refactor(logging): better back-end logging
fix(logging)
fix(logging)
feat(db): load NeDB datastores, insert tournament
feat(app): start/restore tournament
feat(tournament): initialise rings and insert in DB
feat(tournament): restore ring

- add async module
- move logging function to app.js
- improve tournament restoration/initialisation
- more logging
feat(tournament): restore users
feat(tournament): save users to DB
feat(app): separate datastore for users
chore(package.json): reset script to clear DB files
fix(app): restore rings after users

Ring restoration process requires users to be restored first.
feat(tournament): update DB when JP opens ring
refactor(log): move logger to separate module

app/lib/log.js
- logger factory, like the famous *debug* module
- still NeDB Logger for persistence
- log level support: `error`, `info` and `debug`
- `info` levels allows logging notable app events (ring opened, new
user, etc.)
feat(assert): extended assert module

Separate assert module for argument and misc. assertions.
Extends Node's core `assert` module.
In production, exceptions are not thrown.
bug(user): deprecated assertion function
refactor(db): DB module