Add some documentation and optimize for pep8
improve tests, improve coverage
update gitignore
add documentation template (sphinx)
update docstrings