Spec for round-trip encoding.
Fixed Encoding::Converter#primitive_convert. Fixes #2139.

The transcoders are restartable. Also removed the buffers for doing piece-wise
conversions. The code had a latent GC bug in that at any ByteArray creation, a
GC could occur and the Ruby objects on the stack (sourc, src, target) could move,
leading to a segfault.