Use an intermediate buffer for processing

This replaces use of a string with possibly expensive
append operations. Could potentially be optimized further
with handle functions operating on the buffer directly.

Also update tests to match.
Bump version numbers
Update README and remove one byte-compile warning