Apply object display properties when formatting events.
If an object in a formatter tag ({{foo.bar.baz}}) is Displayable,
then we will modify the output based on its display properties.
Currently only supports user links and foreground colours.
This also changes the internal format of nickname links to be
`\u16<nick to link to>\u16<text to show>\u16`, allowing the
link and text to differ. This means if you formatted users
by showing their realname, you could still click them to
open a query.
Closes #424
Closes DMDirc/Plugins#507
At present anything requesting the global config has to depend on
ClientModule, which won't necessarily be exposed through the API.
Move @GlobalConfig, @AddonConfig and @UserConfig to top level
classes in API, and provide both versions of them for now.
This shouldn't be exposed. Internal classes switch to using
the full class rather than the interface, so they can carry
on accessing the removed methods.
This is for the interfaces/trivial implementation classes that
DMDirc plugins can interact with. Eventually plugins will build
against the API instead of the DMDirc client itself, which will
allow for remote/detachable clients (amongst other things).
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.