Set TextInput#selection_start when you set caret_pos to let you type in the middle of a line.

If you don't, it will create a selection in the input field.
That's why the delete happens. It's like making a selection, and then typing.
Set @text to nil on initialize, just so the clearly shows the variable.
Pressing enter while input buffer is active splits the text into two, like making a new line.

Currently allowing TextInput#add to take an optional parameter for 
where the user clicked, in order to set the position of the caret.
This parameter is currently OPTIONAL because it's awkward to figure
out a position to send, when you really want to just put the caret
at the beginning of the Text (as is the case when you press enter).
TextInput#add now takes the caret index as an argument, instead of a point in space.

Easier to just say what you mean. Especially since the 
snap-point-to-character-boundary code has been moved into Text.
Only update caret geometry as necessary.
Clean up extraneous variable usage.
Update Caret position to only update as necessary (like width and height)
Update comments
Remove errant colon. (Not sure how that happened.
Only splinter Text when 'enter' is pressed if the caret is somewhere in the middle.
Update comments and code clarity.
Remove monkey patch to flip mouse constant names around. Fixed upstream.
Establish basis for looking for non Entity-attached Actions
Give all actions a common base class, and a common null object.
Clean up actions index.
Clean up notes in text edit action