Update setup.py to allow easier packaging in different environments.

* deduplicate common setup keywords

* setup packages as namespace packages

It is actually valid to have a python package that lacks __init__.py
(like the gridcentric module does) it's just a different type of package
called a namespace package. More information on those here:

http://cdent.tumblr.com/post/216241761/python-namespace-packages-for-tiddlyweb
http://www.siafoo.net/article/77#multiple-distributions-one-virtual-package

* set PACKAGE and VERSION correctly on pip install

sdists do not preserve environment variables they were generated with,
so later attempts to pip install them will fail.

this implements a system for making package metadata sticky when an
sdist is created, by parsing the PKG-INFO and preferring those values.

* Retrieve the version from git tags

This is only one of the many ways to do it.

Change-Id: I288f55ae565d71fbeaa955ff46485c16a7c24b22
Merge "Update setup.py to allow easier packaging in different environments." into stable/folsom