(#11133) If a node definition uses a regex, make its capture variables available in the node's scope
(#18508) Specify the order of resources in the catalog

This adds a specification to the order in which resources appear in the
catalog. They must appear in the order in which they are added to the
catalog.

In order to make this kind of assertion easier this commit also brings
in Ramcrest.
add include_in_order matcher
Use rspec include_in_order instead of ramcrest
Refactor Catalog#add_resource
Clean up unneeded array code in type
Remove unnecessary alias in Component.new

From our understanding, any resource alias should already exist at this point.
wip: failing test for preserving ordering
(#18508) Preserve order while translating catalog

The catalog is translated in several different places into several
different forms. Each one of these transformations needs to preserve the
order of the resources that they contain.
(#18508) Assert kinds of resources sent to agent

This adds assertions that the virtual resources are not sent to the
agent, but exported resources are (Why? I don't know.). In addition, it
turns out that the extra filter done by the compiler terminus is not
needed, since the catalog.to_resource method ends up removing those
virtual resouces anyway. In addition, that method had been changed at a
point in the past to try to filter out virtual resources, but the
comment on the method still referenced exported. Give that confusion, it
isn't clear that it every had any meaningful effect.
(Maint) Rename catalog integration spec

The catalog integration spec was originally intended as just to be about
the order in which some elements appeared in it, but it has evolved to
be about the general invariants and properties of the catalog as it is
transmitted between the master and the agent.