Cleaned up setup.py

* postgres and mysql now are extras
* db drivers are now requirements only when correct extra is specified
* Lots of clean up and code compaction