Migrate text handling logic into its own element class.
Remove text-specific fields from gui::Element.
Clarify cursor and tab stop behavior.