We make an allocator for temporary lines and then use this for all the steps in the conversion that can do in-place processing.
Keep track of the number of lines each step needs and use this to allocate the right number of lines.
Previously we would not always allocate enough lines and we would end up with conversion errors as lines would be reused prematurely.
Fixes #350 (closed)
Closes #350 (closed)