virtual buffers: Refactor table navigation code. Rather than using absolute coordinates when retrieving a cell, use more directional logic; e.g. find next cell on a specified row. Also, make the cell retrieval code an iterator like _iterNodesByType() for consistency and to make future table work easier. This improves handling of empty table cells and cells spanning multiple rows/columns, but more work is still needed. Addresses #334 and #333.