Use PhutilRope for Channel write buffers and make write buffer details public

Summary:
Ref T4241. Two changes:

  - Use PhutilRope instead of plain string for the Channel write buffers. This makes it more consistent, and should improve performance in some cases.
  - Expose information about buffer sizes as `public`. We need this in a future diff to be able to throttle reads when we're blocked on writes, since we have to be able to test if a write channel is blocked or not.

Test Plan: Ran `arc unit`. Ran `git` operations over SSH.

Reviewers: btrahan

Reviewed By: btrahan

CC: aran

Maniphest Tasks: T4241

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