The third point, redirecting remote output for regex parsing, is tricky. What, or where, should that output go? Currently, it goes to, not surprisingly, Regex for parsing. That part is okish, but then what does Regex do? The connection is back in TelnetConnection, which Regex doesn't have a reference to. IOUtil is all static methods, and doesn't have a reference to TelnetController, either.
Possibly TelnetController could be an Observer, but that seems wrong. TelnetController is a resource, and the Controller should send messages to TelnetConnection. But what messages? The messages are in Regex, which does not have a reference in the Controller. Only IOUtils has a reference to the Regex parser.