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.
Wallets always distribute public keys (in some form).  They don't always distribute addresses.  An example of a case where a wallet distributes pubkeys instead of addresses is for a multisig output, such as those created by GreenAddress.it's software.

(Note: I'm not exactly sure how GreenAddress.it works---I don't use it---but either your mobile app sends them groups of pre-generated pubkeys or it sends them a parent pubkey.)

Because pubkeys are always distributed in some form, I'd prefer to use that as the term instead of addresses.