Start rewriting the MultipartEncoder
Add contextmanager for handling buffer's position.

- Add docstrings to a couple functions.
- Re-organize the definition of private methods on the MultipartEncoder.
Make everything a method

- Move responsibility for handling of certain things into well-named private methods
Add concept of a Part and logic around using it.

- Parts write to a buffer and handle computing how much to write to it.
- They also handle writing the headers and deciding whether to write them or not.
- They also know how long they are (roughly).
Add last bits and docstrings

- This works in a very simple case
Add CustomBytesIO#append

I realized that we mostly only ever want to append to the buffer so having a method for that is best.
Add a short circuit to MultipartEncoder#read

Do not allow it to return bytes after it has been finished
Ensure we truncate the buffer before loading more into it
Fix it for good
Remove old implementation of the encoder
Fix up tests that were not quite right
Add regression tests from issue #31
Fix the encoder and Part class for Python 3
Merge branch 'encoder-rewrite' into 'master'

Encoder rewrite