ast: Allow variant mappings to be inherited by different Frames

The astMirrorVariants allows the variant mapping defined in one Frame to
be controlled via a pointer to a different Frame. Say for instance you
create a FrameSet containing GIRD and FPLANE coords, and assign several
variant Mappings to the FPLANE Frame. You then add a SKY Frame to the
FrameSet, using a suitable mapping to connect FPLANE to SKY. This SKY
Frame has no variant mappings, so you would need to 1) select FPLANE as
the current Frame, 2) set the new variant, and 3) re-instate SKY as the
current Frame. And all this is assuming of course that the user *knows* that the FPLANE Frame has variants.

This is a pain, so the new astMirrorVariants method allows the programmer
to say that the SKY Frame should mirror the variant Mappings available in
the FPLANE Frame. This means that setting the Variant attribute on the
SKY Frame will automatically forward the request to the FPLANE Frame. It
also means that enquiring the list of variants available in the sky frame
will return the list from the FPLANE Frame. In fact, all variant-related
method calls would be forwarded from the SKY Frame to the FPLANE Frame,
making life a lot easier for the user.