GUAC-810: Implement guacTextInput directive.

This change implements the guacTextInput directive, providing the same text input interface that Guacamole provided in recent releases, along with a locally-used guacKey directive for the convenient buttons in the text input UI.

This does *not* actually enable text input mode via the menu. That'll be a different PR.
Is there a reason we can't have a bit more whitespace here?