Review comment on closing down
Don't depend on util._extend

`require('util')._extend` isn't considered stable.
More close scenarios

 - socket close while running
 - overlapping connection/channel close

Makes `send` in the tests asynchronous, which keeps them honest.
More care in changing state while closing

The order in which methods were swapped out, the RPC queue was
cleared, etc., was haphazard. This makes things more consistent: in
particular, `#stop` is called before any communication in
`#closeBecause`.

Actually, I am inclined to make the states entirely explicit, e.g., by
having state objects to which the channel delegates.
Update bitsyntax and buffer-more-ints to avoid monkey-patching

Also gets the benefit of bitsyntax "compiled" constructors.
Collect channel state transitions into to* methods
Give Connection the same state transitions as Channel

This makes the various flavours of `Connection` closing code similar
to that of `Channel`. They were out of kilter even before the recent
treatment of Channel.
Test close a {channel, connection} while closing or closed

It should throw an exception once closing is in progress.