Interaction cleanups between main and wallet

This pull request converts the custom callback handling (from main to wallet) to using boost::signals2, which allow concurrent modification/execution, and are thread-safe. To implement callbacks, a new CWalletInterface is defined in main, and implemented by wallet. As a result, together with a few more changes, we can break the dependency from init (and indirectly, from main) on wallet.

Two functional cleanups were included as well, namely removing the behaviour where transactions "fFromMe" were always trickled (we shouldn't treat our own transactions differently, privacy leak) and removing the (apparently since-long broken) PrintWallets functionality.

Closes #2965.