Add setuptools support

I wrote a setup.py and shuffled the files around so setuptools can work with them. Code is 99% unchanged other than a few path changes.