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.

`MissingRequirement` is a requirement for the host where machinery is run while `MissingSystemRequirement` is a requirement for the host that is to be inspected. To me that distinction makes sense, but maybe we could come up with better names.