Refactor to a baseinstaller framework + fixes

* Fix some exit bugs when we have to reexecute ourself for root access. Adapt
  tests for it
* Better printing of uncaught exception
* Fix some races in the progress handling with multithreads
* Adapt to previous changes in the way we detect and present first progress
  (how we give total download bit sizes on requirements handler and download)
* Better handling if requirements are already uptodate
* Add tests for the new functionalities and change tests to adapt to new APIs
* Add new detect if a desktop file is installed function + tests
* Real is_installed() for frameworks results now
* The android studio inherit from the baseinstaller now, only contains
  framework-specific hooks
* Change from a TemporaryFile to a NamedTemporaryFile due to python bug in
  tarfile (http://bugs.python.org/issue21044)
Remove unused imports and better logging