Add cycling tab completion and a few other tweaks

Major changes:
 * Upgraded CircularBuffer from Iterable to List. It now also supports remove() and set(int, T)
 * Console now supports removeMessage() and replaceMessage()
 * Commands can now throw IllegalArgumentException to nicely indicate incorrect usage
 * Introduced NEW_LINE constant for console messages
 * Added error message type, event and color

Minor changes
 * JoinServer dialog: OnInit -> set focus to text input
 * Console: OnShow -> set focus to text input
 * All debug message now return a status update string
 * Log all uncaught exceptions

This PR fixes #807 and #812