Refactoring proposal

I'm attempting to get cross-compilation for Raspberry Pi (Debian Wheezy/armhf) and the Lego Mindstorms EV3 (Debian Wheezy/armel) to work.
While attempting to understand the existing code, I took a shot at refactoring it to make the structure clearer.

The refactoring consists mainly of:

* Introducing the classes `OSTarget` and `OSArchTarget` to give an explicit name to the `(os_name, os_code_name)` and `(os_name, os_code_name, arch)` tuples.

* Introducing the class `BuildConfiguration` to give a name to `(rosdistro_index_url, rosdistro_name, *_build_name)` (as well as `append_timestamp` and related).

* Introducing the class `BaseBuildConfiguration` and the subclasses `ReleaseBuildConfiguration`, `SourceBuildConfiguration` and `DocBuildConfiguration` to summarize   `(index, dist_file, build_file, dist_cache)`.

The formatting mostly adheres to PEP8, except for longer line widths in some files.
If strict conformance w.r.t. the line lengths is required, I will make the required changes.

Also included are some bug fixes (contained in separate commits).