Orbitable base class Resolves #133

Please see issue #133 for a long, full list of the user-visible changes.

The reason so many files are affected is that the constructors had to
be changed slightly so everywhere a VesselTarget or BodyTarget are created
was modified a little.  Also a few places were changed to operate on the new
generic Orbitable object so they now operate on Bodies as well as Vessels.
If the member is abstract i dont think we need to specify that derived classes have to implement it.