Messenger Unit Tests

Messenger UT mainly uses Messenger and Connection interfaces and not touch any Simple* and Async* interfaces. It mainly tests:

1. Basic method tests
2. name and addr test
3. policy and feature tests
4. corner connection cases

Note: the mainly change affects SimpleMessenger is change the impl of "is_connected". Because it's really hard to write unit tests and do assert via existing impl. Messenger and Connection both hide the actual state of connection. Outer can't know is this connection is just malloc memory or has a successful socket connection or ready to send(ceph shakehand). So I changed "is_connected" semantic to "ready to send" instead of just "exists pipe"

Also fix much AsyncMessenger bugs via unit tests

impl feature #10147
you just need to s/bin_DEBUGPROGRAMS/check_PROGRAMS/ so that it is run on make check.