WIP - squash 125 commits
Actually zero the bytes.

This was missing the ^ for xor.  Spotted by @jrick.
Make zero function in snacl package consistent.
Correct a few comments.
Delete crypto script key for watching-only too.
Delete the encrypted script for watching-only.
Don't allocate objects to enforce iterfaces.

Pointed out by @jrick
Zero priv key copy after making a big int from it.

Suggested by @jrick
Avoid defer in lock.
Comment fixes.
Avoid defer in the lock too
Remove spurious comments in snacl.

Also remove extra newline while here.
Minor tweaks
Remove unused constant.
Remove incorrect comment.
Comment cleanup.
Just return the result instead of unneeded error check.
Address jrick comments.
Allow different account type.

This commit modifies the account serialization and fetching in order to
support multiple account types, even though there is currently only
support for BIP0044 accounts.

As a part of this, the serialization and deserialization code has been
changed to use regular key/value instead of an individual bucket per
account.  This was done because bolt specifically recommends against using
a lot of small buckets to avoid poor page utilization once they grow past
a certain size.  While the current account type does not hit that
threshold, other account types might, so just change it over now.
IMPORT PATH MODIFICATION CHANGESET
----------------------------------

Please use this changeset as the first one on top of the conformal codebase.
Note that if there are new imports, they need to be changed as part of this
changeset. In general, use "git rebase" on github.com/conformal's version
and apply this changeset first.