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.
Avoiding key reuse is probably a good tips for pre-populated databases as well. How about we mention this once in the following paragraph:

    To avoid key reuse, a method must be used to ensure the same public
    key isn't distributed twice. This can be a database entry for each key distributed,
    or an incrementing pointer to the current child key index number
    *when using a parent public key*.

Or then again, mention something like this on the "pre-populate database" text:

    To avoid key reuse, webservers should keep track of used keys
    and never run out of public keys. This can be made easier by using
    parent public keys as suggested in the next method.