loaders: extend the API to allow for manual registration of deployment and task models
loaders: allow initializing a loader with a nil root loader

It is indeed impossible to initialize it with itself ...
loaders: implement discovery methods for Files and PkgConfig

These can be used to load all the available models: first
enumerate their names using the new methods and then call
the corresponding loading methods, project_model_from_name,
typekit_model_from_name and find_project_from_deployment_name
spec: define Project#each_deployment

The deployments had no enumeration method
loaders: calling #to_s on a loader is potentially expensive, log it using a block
remove dependency on nokogiri

Nokogiri is really a pain, and for the little XML parsing we do,
REXML is more than enough.
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.