buildPythonPackage refactoring

Hey folks. I've tried to split commits into separate standalone commits, but this is quite a change and it's far from perfect.

For a summary of changes see commit `Refactor buildPythonPackage to modularize building process.`

I'm also willing to write documentation for `buildPythonPackage` function and other stuff that I have found out now that I've worked on it for last 3 days, once we agree that this is a step forward.

There is still quite a TODO left for me to improve python infra:

- docs, docs, docs

- packages that don't use distutils/setuptools should have low-level functions available to support python integration (for example pygtk)

- add `fetchpypiurl` that figures out the url by package name/version

- fix pypy packages

- `buildPythonPackage` should have an attribute what python versions the package supports (quite tricky and also we shouldn't forget pypy)

- research/document python development with nix-shell (maybe add a `developPhase`)

cc @chaoflow @garbas @cillianderoiste @offlinehacker @edolstra @aszlig