Moving more dependencies into setup.py

And relying less on requirements.txt