Error handling improvements to NoppaAPI

Improved error handling and added support to NoppaImpl for events to which the application can bind and add system messages. NoppaAPI class still needs to expose them somehow.

Refactored PinnedCourses to make more sense.