Update MultipartBuilder to support content length.

In order to track content length we need to convert the headers and boundary of a part to a Buffer eagerly. The length of this Buffer plus what each part's RequestBody reports allows tracking what the overall content length will be. The presence of any streaming body means the length of the entire multipart request is unknown.

Common parts of the boundary and header have been changed to raw byte[] to save the cost of allocation and UTF-8 encoding.

Closes #963.
Figured it was a waste of an object. Should probably just be initialized like `{ (byte) ':', (byte) ' ' }` to not waste time with UTF8.