Command Overhaul

Completely overhauled the command-handling module.

Improved the modularity/readability of the code.

Improved/changed the Command interface.  The interface now uses event objects throughout, and allows a single object (which implements the Command interface) to handle multiple different identifiers.

Moreover, internally command lookup is handled by a hash map, rather than a linear search over an array, which should greatly improve lookup performance when many commands are installed.

Help and Summary now allow the command-in-question to append to the raw ChatMessage that will be returned to the user, meaning that commands can use formatting in their help pages, a massive improvement.

Commands can now return more than just success/failure from their Execute method, which allows for more precise, automated, and consistent error reporting.
Information Update

Updated the information provider to conform to the new Command interface.

Also rewrote the code and made several improvements:

There's no longer a dependency on common.hpp.

A hash map is now used to lookup information providers, which should lead to a lookup speed improvement when many information providers are installed.

The /help info now capitalizes on the ability to use formatting codes to make the help clearer/more readable.

The code is now clearer/more readable.

The code uses the availability of a status return value to communicate failure reasons to the command-handling code, leveraging consistent/automated error reporting (rather than rolling its own).
Information Providers Update

Updated the baseline information providers to conform to newer standards, use newer facilities/interfaces (such as the INSTALL_MODULE macro from mod.hpp), and no longer implicitly depend on common.hpp.
HTTP Handler Cleanup

Cleaned up the code in http_handler.cpp.

Put the #include directives in the proper order.

Removed code that was simply commented out.
HTTP Handler - Max Redirects

Specified a maximum number of 3xx redirects -- 5 -- that the HTTPHandler will follow before failing with an error.

Previously the number of 3xx redirects that would be followed was implicitly infinite.
HTTP Handler Error Message Capture

Tweaked the HTTP Handler internals so that the cURL error string associated with a failure would be captured whenever status code 0 -- which represents a failure, rather than an HTTP status code -- would be passed through to the completion handler.

This will allow for better debug logging and therefore better problem diagnosis.
Authentication Module Debugging Update

Updated the authentication module's debugging output so that it now outputs the error string passed through from cURL when provided.

Also did some small miscellaneous cleanup to the debug log templates.