Implement new namespaced db package named walletdb

This pull request 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
I'll change them over.  I like the scoped error, but it's a fair point that it's a bit hard to read, and I'd rather have it easier to read over the scoped error.