Removed redundant start/end anchors in regexes used with .exactMatch()
Added support for structured system messages (just 'logged in/out' for now)
Minor refactoring for system message parsing cases

Made the object and aux specs optional as most definitions do not need
these. Also made the some regex groups non-capturing.
Bugfix: Check for valid capture number was incorrect
Moved parsing for the IM protocol in constants.cpp

The names are generic enough to warrant making this a global function.
Pidgin Text Format decoder: added structured presence state change messages