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.
That is fine by me if it works.  I wasn't too sure of what C# would think of saying BOTH that a method is "override" AND "abstract".  It seems to be saying, "I am explicitly overriding this abstract method with…uh….nothing - I just want to force my subclasses to override it."