Example 61: Removing duplicate code for chat window creation.

We pull the code that creates a chat window if it doesn't exist into its own method. The calling code is now
much easier to follow.
Example 62: Create a new method that renders the chat message onto the label.
Example 63: Render markup in chat labels.

This is primarily to visually distinguish who sent or received each message.
Example 64: Make the label scrollable.
Example 64: Scroll to the bottom of the window on new text.
Example 66: A generic TextInput that responds to enter keypress.

This is our introduction to how easy it is to create and dispatch events of our own devising.
Example 67: Use the EnterTextInput as base for AccountDetailsTextInput.

Removing duplicate code is the main catalyst here. This is perhaps more readable, but it's definitely more maintainable.
Example 68: Hook up an EnterTextInput to send messages when the enter key is pressed.
Add a sound for incoming notifications.