Add a read buffer size to PhutilChannel

Summary: Ref T4241. See D7772. Just like `ExecFuture`, allow the internal channel buffer to be limited in size so when we're plugging a fast pipe into a slow pipe we don't end up with all of the data in memory (subject to actually using these features).

Test Plan: Added unit tests.

Reviewers: btrahan

Reviewed By: btrahan

CC: aran

Maniphest Tasks: T4241

Differential Revision: https://secure.phabricator.com/D7774
Allow PhutilChannel to select only write sockets, and expose read buffer status

Summary: Ref T4241. Ref T4206. Small API changes to fix T4241 (next diff). See previous diffs for context.

Test Plan: See next revision.

Reviewers: btrahan

Reviewed By: btrahan

CC: aran

Maniphest Tasks: T4206, T4241

Differential Revision: https://secure.phabricator.com/D7775