add ensure_cursor_in_view()

mostly works.
fix loader bug

was eating a character from time to time.
fixing vertical cursor move across blocks

requires a bit of recursion.