Miscellaneous cleanups in protocol:

*  Give KnownFormats deleted copy members so that derived
   classes will give the right answers if queried with the
   std::is_copy_constructible/assignable traits.

*  Replace SharedSingleton with a local static in
   LedgerFormats::getInstance() to be consistent with
   similar code in other places.  This also allows the
   LedgerFormats default constructor to be marked private
   so that the compiler enforces the design that
   LedgerFormats is a singleton type.

*  Change RippleAddress to inherit privately from
   CBase58Data instead of publicly.  This lets the compiler
   enforce that there are no unintended conversions from
   RippleAddress to CBase58Data.  This change allows us
   to remove a comment warning about unwanted conversions.

@miguelportilla, @nbougalis