Changed the threading model of IRCMarshal to prevent blocking of the socket

The socket thread will now enqueue items in the IRCMarshal's queue and will then leave it for the background thread that IRCMarshal now has to pick up as to prevent PONGs not being sent back to the server in a timely fashion due to a back log of UI processing to do (namely when requesting a list of channels on a highly active server).