Add custom widget module.

This is incredibly buggy and will see many further commits in the future.
Fix formatting.
Fix a crash on empty text fields.

Embarrassing. Remind me to never use crashing stdlib functions again.
Add scrolling.
Add scrollable text field to client.
Clean up formatting and imports.