Improve support for custom executors in listeners

First stab at fixing http://code.google.com/p/bitcoinj/issues/detail?id=567

This PR does not remove the isRelevantTransaction since an alternative method of signaling which transactions are insteresting should be provided. If you want I can add that as a different commit, but I would like input on what the alternative mechanism should work (`Set<Sha256Hash> getRelevantTransactions()`?).
The previous code was already verifying transactions in some cases when `shouldVerifyTransactions` was false:

```java
boolean contentsImportant = shouldVerifyTransactions();
if (block.transactions != null) {
      contentsImportant = contentsImportant || containsRelevantTransactions(block);
}
```

I changed this because when you said:

> this test helped us avoid the overhead of building and verifying the Merkle tree, which was significant. After Bloom filtering this is no longer a concern and the purpose of the test is largely redundant

I understood this meant that the `block.verifyTransactions()` could be performed without concern for performance thanks to bloom filters.

The tests do pass (well, before the change I get 2 failures and after the change I still get the same 2 failures).