Initial sketch of os support plugins.
Factored out abstract base class OS, and installers for OS plugins.
Initial attempt at installer abstraction.
Addressed remarks and added some more todos and minor tweaks to os_support/installers.
Added rules dict merging and verification.

 - This to a large extend described here:
   https://github.com/catkin/xylem/issues/9

 - Adapted existing rules expansion slightly

 - Unicode handling of identifiers needs to be fixed
Fixed prefix argument handling.
Fix python 3 compatibility.
Add a sprinkling of unicode to unit tests.
Update some meta information.
added tox config
Changed classes to new style.
Run python-modernize to unify unicode handling between python 2 and 3.
Run python-modernize on test suite and add unicode_literal import.
More py2/py3 compatibility.

 - Load everything internally as unicode.
 - Added utility for reraising exceptions.
More p2/p3 compatible in/output unicode handling.

 - use utilities from the `kitchen` package
 - https://pythonhosted.org/kitchen/unicode-frustrations.html
 - https://pythonhosted.org/kitchen/api-text-converters.html
Change from using `kitchen` to our own helpers.

 - kitchen is not python3 compatible :-|
change name to `text.py`. `unicode` was poor choice for a module name.
Improved the text utils to be much more robust and handle classes better.
Rename text.py to text_utils.py
Quick and dirty commit to demonstrate recent changes.

Will revert and split into proper commits.