automatic database initialisation

Manually initialising the database (as a non-root user) was causing problems for users but the switch to `setup.py initialize` only confused the situation further.

After this change no manual intervention is required. When the server is run it creates the database file if it's missing.

I've opted to leave the behaviour of `setup.py initialize` as is for now since users may still try to initialize the database this way. We can possibly remove it in the future if it's not useful.