Add partial output to POSIX::Spawn::Child

This always keeps the output of a spawned child, even when an
exception needs to be raised.  To make this work, this requires
that the exec! of the child can be deferred from the creation of
the POSIX::Spawn::Child object, too.
Add new 'prepare' Child constructor

Instead of the ugly :defer option
Fix up documentation mistake

Left a reference to the :defer option in the exec! docs.
Rename deferred spawn to 'build' and improve docs
Missing a prepare -> build rename in docs
Remove truncation of out and err buffers

Keep all of the out and err data even when we have exceeded the
max length and fix the documentation to clarify this behavior.
Fix input consumption logic

This fixes a minor typo in the read_and_write function that tries
to force a BINARY encoding on strings.  It actually still worked
as it was, but this is better.

Also, this updates the function that trims the processed data off
the front of the input to use `byteslice` if that is available for
strings on the current Ruby.  This is really the only correct way
to deal with arbitrary UTF8 data.  If that isn't present, fall back
on the old way, but keep in mind that multibyte data will be
processed incorrectly.
Use send instead of a lambda for byteslice
Merge pull request #47 from arrbee/rb/partial-output

Add partial output to POSIX::Spawn::Child