Consolidate exception classes

Our rationale for exception classes is to have exception classes for
cross-cutting concerns (system description, connection erros,
command-line) and then for specific areas (building, kiwi export,
deploying, inspection). Inside these we try to not introduce too many
similar classes.
Merge pull request #25 from SUSE/review_140731_consolidate_exception_classes

Consolidate exception classes
Define basic Os classes
Add SystemDescription method to get Os instance

The SystemDescription#os_object has the minimal implementation for
now. This needs later refactoring to move the name comparisons to
the specific Os subclasses.

The method is names os_object for now to not conflict with the
os scope which is accessible via the os method. This should probably
be merged somehow in the future.
Add method to return Os object for local host
Allow can_build? to also receive an instance of Os
Rename LocalSystem.os to os_object

The rationale is to make LocalSystem.os_object consistent with
SystemDescription#os_object. They both return an Os object.
Move display names of Os to Os class

Conflicts:
	lib/os.rb
Refactor Os detection

This eliminates the redundancy of the Os objects. There still is
a problem with the list of available Os classes being hard-coded
in the function. This should be based dynamically on the defined
Os sub classes. This is something for a later refactoring.
Fix conflict due to exception changes
Remove obsolete code
Simplify mocking of host Os
Use native Os objects when checking for platform

The test used an invalid OS name, which is not legal in the native
objects, so we now use a valid OS name, which is not supported for
building.

This could be refactored further by putting the Os specific code
into the Os classes. Then the case statement would not be needed
anymore. Drawback would be that the build specific code is then
distributed over more than one class.
Remove stray statement
Use Os classes to choose network details