Changed the way we create Options to be defined by the implementation of the AbstractTerminalModel.
This scopes Option implementations to be managed by the TerminalModel, rather than with wider scope than TerminalModel or TelnetClient.

Which eliminated the issue of thread-safety for Option implementations.

Also started cleaning up a lot of the JDK 1.5 / java 5 feature usage (better use of generics, annotations, etc.)