Refactoring and removing unneeded cursor logic

Some of the logic flow of positioning the cursor was relying too much on the
order to determine if we were in a single layout. Turns out, that wasn't
necessary given the later checks for exceeding the full text length, so cleaned
that up.

Also extracted some more precisely named methods for how things get positioned
to help with readability.
Move logic that uses first line height to cursor

The cursor height was the only thing that was relying on the method that
assumed all line heights were the same. Given that, move it over to the cursor
which can do whatever it wants later on, and get that methd out of the broader
interface.
Merge pull request #547 from shoes/text_cursor_tidy

Text cursor tidy