Server protocol:SMOD command

The SMOD command is used to communicate loaded modules on the server.

This is usually only used by UnrealIRCd to communicate and detect potentially missing modules which are marked as either global or required.

May still be useful for pseudo-servers who still wish to know this information for whatever reason.

For now, this is only communicated during the connection exchange; unloading or loading modules after a server is fully connected will not communicate this event with other servers.

Syntax
SMOD :X:module-name:version X:module-name:version X:module-name:version ... etc

Where:
 * X = The type of your module. One of R, L, G (See below)
 * module-name = The name of the module as shown in the header of that module.
 * version = The version of the module as shown in the header of that module.

There can be any amount of items in the buffer (within the buffer constraints) and there may be more than one line of `SMOD` communicated during connection.

Types
The three types you can expect to see are:
 * R - The server has a `require module` block for that module. (See Require module block).
 * L - The module is marked as 'Local' (not required to be loaded on every server on the network)
 * G - The module is marked as 'Global' (is required to be loaded on every server on the network)

Example of inbound SMOD command
This example uses `737` as the incoming Server ID (SID) which is telling us about it's modules.

Note: For outbound commands you won't need to prefix with your Server ID, but it won't break if you do.