use python-versioneer for awesome version management

https://github.com/warner/python-versioneer

> Versioneer works by adding a special _version.py file into your source tree, where your __init__.py can import it. This _version.py knows how to dynamically ask the VCS tool for version information at import time. However, when you use "setup.py build" or "setup.py sdist", _version.py in the new copy is replaced by a small static file that contains just the generated version data.
 _version.py also contains $Revision$ markers, and the installation process marks _version.py to have this marker rewritten with a tag name during the "git archive" command. As a result, generated tarballs will contain enough information to get the proper version.