A fix/workaround for streaming encrypted IO objects via S3.

The `AWS::S3::CipherIO` class has a bug that causes it to report
`#eof?` before reaching the end of the stream if `#read` is called
with a number of bytes not divisible by 16.

This patch works around this limitation by causing the multipart
uploader to always use part sizes evenly divisible by 16.  CipherIO
is a private/undocumented class, but this is a shim.  CipherIO
should be updated to properly work when `#read` is called on the
non-final chunk with an odd number of bytes.

The underlying cause is the internal encryption cipher
buffers internally and only returns values 16 bytes at a time.
Using an internal buffer in CipherIO could solve this problem.

Fixes #414