API changes to support text editing

- Added pop() method to text to remove a character from a text object
- Newlines stored as characters instead of in separate vector. The separate
vector approach proved to be a unmanagable, especially when editing text.
- Automatically invoke layout() which is now private. Users now set layout
parameters in a new set_layout() method.
- Renderer no longer creates text objects itself. Instead the user
attaches text objects via renderer::set_text() or operator<<(text *).