Fixes for issue #11

This is mostly complete and passes almost all uhura tests (see below) and all strong-agent tests.

I'm not entirely happy with the magic 'corked' property but I copied the concept from the 'ready' property.  Both are setters that perform all kinds of side effects.

I'm still investigating the occasional failures of the 'should not lose messages while disconnected' test.  It worked by accident before but 3475fff exposed a race condition.

There is at least one bug in the test itself - it's possible for the timer to expire between the last message being sent and received - but it sometimes misses an older message whereas a newer one _has_ been received.  Could indicate that there is more than one way for #11 to happen.

Suggested reviewers: @sam-github @themitchy