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
This looks really odd putting the anonymous function inside the if statement.  Can the error variable be defined outside of the if check?