Replace distribute with setuptools

Distribute has been merged into and superseeded by Python setuptools. To keep up to date with this development the distribute_setup file has been changed to ez_setup
Merge branch 'feat_setuptools' into feat_docs
Updating setup with optional requirements
Updating setup with optional requirements