Major database rejig

Minor changes
---------------------
to mail.py and projects.py - just tacked on as I forgot to push and too lazy to separate them... 

=0p

The real work here has been done to 

Database handling - db.py.
---------------------------------------

- All desired tables should be defined in the `dict` at the top `self.all_tables`. Name, Version number (!! increment on schema changes) and SQL create table info - just the column descriptions [ie without `CREATE TABLE...` etc].

- Any table defined will be created if not exists (current functionality - in future will be able to test version and upgrade tables `self.__on_upgrade()` automatically)

- To skip the managing of a table add it to `self.unimplemented_tables` and it will be assumed to be ok. It's up to you to manage.


Makes some headway towards Issue #35.