More changes for a much more robust build system.
setup script now respects all user expectations when building and
installing a Python package.

custom install and build commands were added to setup.py for this
purpose.

One of the quirks of the Python setuptools/disutils is that it is not
very great at deciding when to recompile extensions. For example, if
rebuilding by merely changing a build option, setuptools will likely not
rebuild the extension. To get around this, first do

./setup.py clean --all

and then do

./setup.py build <with-different-options>