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