Updated VerifyMessage to not use the keystore
Implement new namespaced db package named walletdb.

This commit implements a new namespaced db package which  is intended to
be used be wallet and any sub-packages as its data storage mechanism.

- Key/value store
- Namespace support
- Allows multiple packages to have their own area in the database without
  worrying about conflicts
- Read-only and read-write transactions with both manual and managed modes
- Nested buckets
- Supports registration of backend databases
- Comprehensive test coverage
Add full test coverage suite for walletdb package.
Add examples for walletdb usage.
Add README.md for walletdb and bdb driver.
Add tests for new encryption API on the manager

100% coverage on selectCryptoKey, Encrypt, Decrypt.
Cleanup recent encrypt/decrypt test additions.

This commit cleans up the recent test addition for testing the positive
and negative error paths of the Encrypt and Decrypt functions.

In particular:

- Add comments to all new functions
- Close the manager before trying to delete the file which is otherwise in
  use
- Rename the temp prefix since these are not pool tests
- Rename setUp to setupManager to make it a bit more explicit what it's
  doing
Correct walletdb README.md example link.
Finish comment in walletdb namespace example.
Convert waddrmgr to new walletdb package.

This commit converts the waddrmgr package to use the new walletdb package
semantics.

Since waddrmgr no longer controls the database, it is unable to make a
copy of the database and return it as the old ExportWatchingOnly function
required.  As a result, it has been renamed to ConvertToWatchingOnly and
it now modifies the namespace provided to it.  The idea is that the caller
which does control the database can now make a copy of the database, get
the waddrmgr namespace in the database copy and invoke the new function
to modify it.  This also works well with other packages that might also
need to make modifications for watching-only mode.

In addition, the following changes are made:

- All places that worked with database paths now work with the
  walletdb.Namespace interface
- The managerTx code is replaced to use the walletdb.Tx interface
- The code which checks if the manager already exists is updated to work
  with the walletdb.Namespace interface
- The LatestDbVersion constant is now LatestMgrVersion since it no longer
  controls the database
Implement the deposit side of Voting Pools

This contains the APIs to create and retrieve Voting Pools and Series (with
public/private keys) from a walletdb namespace, plus the generation of deposit
addresses (using m-of-n multi-sig P2SH scripts according to the series
configuration).
WIP: voting pool withdrawals
Add outbailment sort and test
Change withdrawal.sign() to lookup the master private keys from the votingpool DB and derive the ones necessary to sign transactions
Move the votingpool-specific errors from waddrmgr into votingpool

Also fixes a couple tests to use checkError() instead of doing the check
manually.
Move most test helpers under the votingpool pkg

As a consequence, some of them were made public so that they can be used in
both our whitebox and blackbox tests.

In our blackbox tests I aliased the votingpool import to vp.

I also renamed helpers_test.go to common_test.go
Add a new wb test for getRawSigs()

And a few extra improvements:

 * Simplify the existing TestWithdrawal, by moving some of its checks into
   assertion functions

 * Change a few test helpers that used to take both a pool and a manager
   argument to take just the pool, as the manager can be retrieved from there.

 * Rename a few things, like TxInSignatures to TxSigs as it really holds the
   sigs for all inputs in a tx

 * Fix TstCreatePkScript() to lock the manager after it's done -- callsites
   should explicitly unlock it if they need so
Move (and rename) FakeTxShaCredit to common_test