Performance improvements for `readtable`

This is a draft of the next generation of `readtable`. More work is needed to close the performance gap with R, but this brings up to the best performance we've ever had. Most of the speedup comes from reusing data structures like buffers and sets across function calls.

The obvious timesink now is the type conversion step, particularly because it uses nested `try`/`catch` blocks.