Refactor errors notification system

Refer to #1524 for the briefing of this PR.

Refactors the song errors notification system, now the export project displays when errors occurred:

![2014-12-29-035448_905x296_scrot](https://cloud.githubusercontent.com/assets/347552/5566454/7d6152fe-8f0f-11e4-9403-c2c3470c64c5.png)

Also collects errors when effects or plugins can't be loaded.

This PR has the implication that we are now able to replace all of those message boxes with the `hasGUI` check for the simple `collectError` call which displays when exporting as well.

What part of it do you think is stupid?  Perhaps a cleaner way is to make a `SongError.h` class and do `Song::appendError(new SongError(error));` but that would be more changes.  What you've done by moving the messaging system out of the GUI I think is ideal, although I may be missing something.