Implement setup.py for distribution