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.
Sadly, yes, but I'll give it another go...

Many of the appropriate places to put whitespace here for the sake of readability would have meaning in HTML, introducing undesirable visual spacing between the buttons, misalignment of sent text vs. the input target, unnecessary wrapping, etc.

Give me a min...