Miscellaneous cleanups to code in protocol directory:

*  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 return types of LedgerFormats::getInstance() and
   TxFormats::getInstance() from pointer to non-const to
   reference to const so as follow more established design
   guidelines for singletons.  This prevents pointers being
   mistaken for heap-allocated objects, and the const
   ensures the singleton isn't mutable.

*  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.