Port over the following two commits from core.
```
commit 2a52ae63bfdde948250df1c876dcdd5af99f03b5
Author: John Newbery <john@johnnewbery.com>
Date: Thu Mar 30 08:38:46 2017 -0400
Remove duplicate method definitions in NodeConnCB subclasses
All Node classes in individual test cases subclass from NodeConnCB. Many
have duplicate definitions for methods that are defined in the base
class. This commit removes those duplicate definitions.
This commit removes ~290 lines of duplicate code.
commit 52e15aa4d067fc4ace12c80be5c82e85c04fcfec
Author: John Newbery <john@johnnewbery.com>
Date: Wed Mar 29 14:07:39 2017 -0400
Adds helper functions to NodeConnCB
This commit adds some helper functions to NodeConnCB which are useful
for many tests:
- NodeConnCB now keeps track of the number of each message type that
it's received and the most recent message of each type. Many tests
assert on the most recent block, tx or reject message.
- NodeConnCB now keeps track of its connection state by setting a
connected boolean in on_open() and on_close()
- NodeConnCB now has wait_for_block, wait_for_getdata,
wait_for_getheaders, wait_for_inv and wait_for_verack methods
I have updated the individual test cases to make sure that there are no
namespace problems that cause them to fail with these new definitions.
Future commits will remove the duplicate code.
```