Adds outside-staff-interface and outside-staff-axis-group-interface
When a property exists in an interface, the property should make sense for
a sensible of grobs that implement that interface. Otherwise, the property
should be part of a separate interface that applies to a sensibly-sized
group of grobs.
Various properties having to do with outside-staff calculations belong to
grob-interface. This does not make sense for many grobs (StaffSpacing,
NoteSpacing, SpacingSpanner, StaffSymbol just to name a few). There is a
limited collection of grobs for which outside-staff properties make sense.
The outside-staff-interface provides a separate interface to be implemented
by these grobs.
The same is true for axis groups that place outside-staff grobs, which form
a limited subset of grobs implementing the axis-group-interface. Rather than
putting the relevant properties in the axis-group-interface, we move
them to an outside-staff-axis-group-interface.