Don't fiddle with ports before passing them to the parser.
If the user doesn't specify a port, allow the parser implementation
to figure it out for itself. This allows for things like SRV lookups,
or different default ports per protocol.
It doesn't make sense to have a public method in Connection to
muddle around with how queries are tracked, nor for queries to
tell servers when they change (creating a dependency loop).
Instead, have the ServerEventHandler tell Server.
Stop swimming against the tide and accept what most of the rest of
the world does.
While it adds an annoying depth to the actual source code, it makes
the root directory nicer (no more 'test-res' dirs), means we don't
have to override the gradle config, and makes it nicer to work in
IDEA 2016.1.
Instead of wrapping the source event and modifying it, they are
now proper events that are displayed themselves (and the original
message is suppressed).
This allows highlights to be formatted differently.
Issue #669
Guava provides a nice class which uses the public suffix list,
so we can ditch all of our hand-crafted logic and pathetically
small list of top level domains and do it properly.
Add a base class for events with a WindowModel source.
For #662, it makes sense to have a standard way to
get the source from events we may wish to filter.
This introduces a SourcedEvent interface, and adapts classes
to use it.
With numeric formatting gone, all output is either added direct
to a window (which will be changed soon) or done through
displayable events. Message sinks are now completely unused,
as they don't affect displayable events.
Issue #426
Instead of passing them in to the FrameContainer ctor, create
them afterwards.
This means the reference in FrameContainer can't be final but
removes the horrible setOwner() kludge that was previously in
CommandParser, and cuts down the deps needed to pass in to the
FrameContainer ctor.