Implement most of the features of TextField

Needs a comment about how it is supposed to work, taking the intersection of all text formats and all.