Implement `DefaultBlockchainActor`

Provide the default implementation of blockchain actor. After a refactor of the messages of `BlockchainActor`, the default implementation and its unit test are coded. 

We are missing a necessary code path in this function: if a transaction is confirmed which spends the inputs of a transaction for which we were waiting confirmation, a `TransactionRejected` message should be returned.

This is going to be the case where someone is being evil and trying to perform a double spend.