loaders: add sanity checks

This adds checks so that projects and typekits that we load have
the name that is expected, as well as not registering twice models
with the same name(s). The latter is quite critical, as we want
to ensure that a given model in the system is uniquely represented
by a single orogen object.
loaders: auto-register children on Aggregate

The loader structure really works only if the only loader
object that is used to load models is the root. As such,
we almost always want to register the child loaders onto
their parent aggregates.

The child calls #added_child which is forwarded in Aggregate
to #add, thus allowing to override this behaviour on a case-by-case
basis.
loaders: be broader in the set of exceptions we catch in Files#each_project
Revert "loaders: register loaded models on self even if self is not root"

This reverts commit 53de34192045b46811a208593118298fe42b6d5c.