Refactor of messages of `BlockchainActor`

The message `PublicTransaction` was not used and it has been removed.

In order to have a simpler naming model and line it up with the messages
or other actors, the following messages are renamed.

* `NotifyWhenConfirmed` to `WatchTransactionConfirmation`
* `GetTransactionFor` to `RetrieveTransaction`
* `TransactionFor` to `TransactionFound`
* `TransactionNotFoundWith` to `TransactionFound`
Extend `BitcoinjTest` functionality to fork the blockchain

Add some members to be able to fork the blockchain

* A `chainHead()` getter that returns the blockchain head
* A new signature for `sendToBlockChain()` that receives the parent
block as argument. This may be used to fork the chain.
Implement `DefaultBlockchainActor`

This change provides the default implementation for blockchain actor.
It is able to process the existing messages defined in `BlockchainActor`
and its logic.

An additional message `WatchPublicKey` has been added to
`BlockchainActor` and its logic is implemented in
`DefaultBlockchainActor`. This message is needed in order to have
BitcoinJ as backend, since it cannot observe all the transactions that
are sent to the blockchain but only those that are relevant based
on the addresses of a wallet.
Merge pull request #194 from apoloval/issues/52

Implement `DefaultBlockchainActor`
Use ImmutableTransaction on DefaultHandshake
Introduce exchange and role attributes on Handshake
Make client.Handshake more like common.Handshake

Use ImmutableTransaction and remove the Buyer/SellerHandshake derived
classes.  Also, move some details of DefaultHandshake to make it more
similar to the new implementation by having partial refunds instead of
total refunds.