Extract error reporting into a new class.

Move error reporting logic from ProgramError into a new ErrorReporter.
Also add methods for reporting on mode alias issues (currently unused).

Issue: CLIENT-476
Change-Id: I23a25e6cc594003cf2afee7cfda714a9082acc3b
Reviewed-on: http://gerrit.dmdirc.com/3332
Reviewed-by: Greg Holmes <greg@dmdirc.com>
Automatic-Compile: DMDirc Build Manager