Handle if reinstall in other directory than origin

* If we do reinstall in another directory than the original one, we have to
  potentially have to clean 2 directories: the original one, and the new
  one up for installation if it's not empty. Fix the logic about this and clean
  up the code to be more flexable and cleaning both if needed (reasking if the
  new path up to installation isn't empty as well). Set the install_path way
  later for that reason.
* Mark the config file up only at the end of a successful installation as we
  delete the original installation at the very end of the installation process.
  (this enables to keep a trace of where it was installed to be able to remove
  it at the second reinstall request if the first one failed).
Remove previous boilerplate code

* This will be to give a clear "add new framework" example.
Move paths to remove to a set
Fix a test as we need to set the install_path

* The requested install_path needs to be set as install_path before marking
  it into the configuration.
setup() doesn't need install_path argument anymore

* update the baseinstaller to not add that argument
* update all the tests as well
Add a remove_from_config utility

* This enables to remove from the udtc config file any registered framework
* Add corresponding tests
Add removal feature to frameworks

* All frameworks have now a --remove option enabling them to uninstall
  their desktop file, icon, projected content and udtc config.
* Add corresponding tests.
Fix tests mocks to be instantiable

* remove() method is abstract, ensure we can continue to register the mock
  frameworks in tests by adding this function.
* Set the args to False when running run_for
Add small tests on calling the remove function
Add 2 reinstall large tests

* This will enable to ensure that recent code change really remove the
  initial installation, even if we change the destination directory.
Add some comments and FIXME
Optimize Dockerfile by not installing desktop

* Get a smaller docker image by not installing the whole ubuntu-desktop
* Some optimization to be able to run trunk tests with only the needed
  runtime and test dependencies.
Reshape Dockerfile to have fewer layers

* Avoid having too many layers and cleanup content. This avoid saving some
  MB in the image size
Depend on nose-json and produce json output

* We now rely on nose-json to publish json test results. That will enable
  easier parsing in the future that just using the raw xml.
Switched Download Center to requests.
Fixed small and medium tests.
New SSL certificate: this one is valid for hostname 'localhost'.
Introduced 'requests' as a dependency.
Assorted small tweaks.
Nicer error message on invalid schema.
Removed some unnecessary assertions.
Minor tweaks.
Merge pull request #24 from Tinche/master

Merging switch of Download Center to requests to support redirection and other network features. Thanks to Tinche.
Reconcile with master