Fix hdkeychain to avoid zeroing net version bytes.

This commit corrects the Zero function in hdkeychain to nil the version
instead of zeroing the bytes.  This is necessary because the keys are
holding onto a reference into the specific version bytes for the network
as provided by the btcnet package.  Zeroing them causes the bytes in the
btcnet package to be zeroed which then leads to issues later when trying
to use them.

Also, to prevent regressions, new tests have been added to exercise this
scenario.

Pointed out by @jimmysong.
Export the hdkeychain min and max seed byte lens.
Changed TxIn.PreviousOutpoint to TxIn.PreviousOutPoint after btcwire API change.
Introduce bloom.Builder.

This change separates the old Filter type into two types for a client
(usually a wallet) and a bitcoin server.  These types are Builder and
Filter (for the client and server, respectively).  Builder is used by
a client to create a filterload message to send to a bitcoin full
node.  When this message has been received, the filter can be loaded
(using bloom.FilterLoad) to create the Filter structure.  Data can not
be matched directly against the Builder, and unlike Filter, it is not
safe for concurrent access.