Use BytesIO rather than StringIO; support python3
Package layout; setup.py
Add gitignore
Split executable to separate file