First version of Android Studio downloading

* add decompressor facility
* reshape UI and interaction handling
* change some API for download-center and requirements-handler
* add more tools functions
Still WIP
Add a special case if current_arch = package:arch

* apt, on non multi-arch system, doesn't treat "package:current_arch" as
  "package"
Remove FIXME for testing and mark as installed
Refresh requirements and setup informations
Fix pep8 and rename to mark_in_config
Add tests for catching exception in mainloop

* Add tests for the exception catched in GLib.idle_add
* Ensure we exit with the right value
* catch BaseException instead of Exception (more generic)
* Use the decoration for any GLib.idle_add to protect against those exceptions
* Refactor tests due to those changes (including sys.exit direct call)
Fix tools tests with API change
Adapt interactions tests to new API

* Change tests for new interactions API
* Add more tests and fix bugs in the interactions option
Fix frameworks loader tests

* Adapt tests to new frameworks loader config
* Don't switch user in tools if we aren't root
Ensure we can have a list of download without md5

* This fixes the testsuite as it makes sense to be able to have a list of
  requests without md5sum handy.
* Also, log an error where an error is due
Add a test for the md5sum support
Add successful md5sum check pass
Intermediate commit for debugging (requirements)

* Fix some requirements tests with API change
* Really add a foo and armhf package for tests, and try to load them
  in the cache
Refactor requirements_handler to not be racy

* As we were calling the mark_install directly, the thread could not have
  started and so we could have installed both bucket in the first shot.
  Ensure we mark as to install only in the thread.
* Adapt tests for raise (returns an error instead of raising)
* Add more tests for multi-arch and bucket_available/is_installed
* Replace cache = Cache() reload with cache.open() to reuse the same object
* Add seteuid and setegid mocks and tests
* Other tests fixes with latest API
Fix pep8
Rebuilt coverage to 100% for framework loader

* Add tests to get framework loader fully covered
* RequirementsHandler no more raises exception but will return False
Add a test for no content length

* Add the facility to local server to send no content length
* Add a test for that case to bring download center to 100% of coverage
Better progress reported if size is unknown

* Change the way the progress is reported when the size is unknown to send
  the number of	read bytes
* Use CopyingMock for mutable args in the size tests
* CopyingMock to follow the project super() pattern
Add a facility and manipulate path to remove mocks

* Add a way to append and remove to PATH
* Use that in tests to have subprocesses using the tweaked dpkg
* Reorganize and fix some tests
* Rename function for reopening the case
Fix remaining tests for multi-arch

* Discare the cache for multi-arch
* Adapt tests after having moved the mark_install in the separate thread