Multiple element bug fixes and basic textfield

Textfield is definitely the most complicated element so separating it
properly is gonna be needed. So far what's left is: cursor control
(left, right, delete, backspace), copy/paste, text drawing, mouse cursor
control (.font:getWidth for every character) and text selection.