Reorganize

This pull request contains the following changes:

* Arbitrary instances have been moved from the test folder to public module Network.Haskoin.Test
* Arbitrary instances are now defined on types that wrap the underlying type. This allows for more than one Arbitrary instance per underlying type and also allows for related Arbitrary data to be together in a same type.
* Block types have been moved from Network.Haskoin.Protocol to Network.Haskoin.Block
* Transaction types have been moved from Network.Haskoin.Protocol to Network.Haskoin.Transaction
* Bloom filter types have been moved from Network.Haskoin.Protocol to Network.Hakoin.Crypto.Bloom
* Merkle Block types and merkle algorithms have been moved from Network.Haskoin.Crypto.Merkle and Network.Haskoin.Protocol to Network.Haskoin.Block.Merkle