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. 

I am worried about this piece of BitcoinJ's code (`AbstractBlockChain.java`):

```java
    private boolean containsRelevantTransactions(Block block) {
        // Does not need to be locked.
        for (Transaction tx : block.transactions) {
            try {
                for (final ListenerRegistration<BlockChainListener> registration : listeners) {
                    if (registration.executor != Threading.SAME_THREAD) continue;
                    if (registration.listener.isTransactionRelevant(tx)) return true;
                }
            } catch (ScriptException e) {
                // We don't want scripts we don't understand to break the block chain so just note that this tx was
                // not scanned here and continue.
                log.warn("Failed to parse a script: " + e.toString());
            }
        }
        return false;
    }
```

If I understand correctly, this will return `false` for the transactions our actor is interested in, since the executor is not the `SAME_THREAD` executor. I think the tests are working because we are using a transaction that is being marked as relevant by a Wallet, not because it is being marked as relevant by the BlockchainActor :(