Add Subsection About Wallet Programs, Incl. Hardware Wallets

Preview: http://dg1.dtrt.org/en/developer-guide#wallets

The existing Wallet section only covers private key storage. This PR moves that text into a Wallet Files subsection (changing every h3 to h4 and h4 to h5) and adds a new Wallet Programs subsection, giving the document the revised hierarchy:

* Wallets
    * Wallet Programs
        * Full-Service Wallets
        * Signing-Only Wallets
            * Offline Wallets
            * Hardware Wallets
        * Distributing-Only Wallets
    * Wallet Files
        * [Previous text; nothing has been removed]

All the text in Wallet Programs and its children is new.  It describes the essential functions of a wallet program and how multiple programs can work together to fulfill those functions, as in the case of a signing-only wallet.
@saivann fair enough.  I'm just not really sure how to word it without being repetitive or incorrect.  It would be nice to have a phrase we could use both here and in the other sections where we have the same problem.  "Receiving information" sounds too generic; "output script" isn't quite correct in the case of addresses. Maybe "public key in some form"?  Or "public key (address)"?

If we change it here, we should change it other places too, so I'm going to assume this is a non-blocking change.  Thanks!