Alternative visual block representation.

This introduces a concept of "visual" offset (read pixels) to calculate
model offset for a line in block selection. This solves the issue with
TAB characters.

Refactored existing operations to use the new representation.

Basic operations seem to be working, but there are still many issues.
Just trying to see if the new way is viable.