Buffering support

This commit contains a bunch of copypasta from Ruby's own
OpenSSL::Buffering module, with a few tweaks to make things work
properly with Celluloid::IO

These methods reimplement most of the core IO methods of Ruby,
especially the ones that rely on an internal buffer such as the
line-oriented methods.

No tests for most of these yet, sorry :( But the existing tests are
still passing, yay!