First implementation of DeleteIconCommand

Basic undo/redo functionality has been implemented, but lacks
testing.
Added an insertIcon() function to IconSet
Actually utilized the IconSet observer pattern

Added IconListModel and ClassificationTreeModel to IconSet's
observer list. Moreover notifyObserver() is being called upon
modification of the IconSet data.
I changed Icon.classifications from shared_ptr to a plain raw pointer

My initial choice of using shared_ptr turned out to be a "smart pointer
beginner's mistake". By not using shared_ptr consequently (e.g.
using a unique_ptr in the Icon class) a bug was induced, that led to
an Icon's classifications being deleted to early.

Two solutions would have been possible: Using reference counted
pointers wherever IconClassifications are being dealt with, or just using
raw pointers and relying on the classifications' owner to clean
up properly.

There is no actual shared ownership, but, as stated in various other
documets, IconSet owns both the Icons and IconClassifications.
Thus I decided to stick with the second solution.

My personal lesson learned today is as follows:
"If an object is pointed to by a unique_ptr, this must have happened
for a reason and it does not make sense to have a shared_ptr to that
very object at the same time"
Added a function to return a list of currently selected Icons
Added a TODO note: Current state does not provide undo functionality

The general structure for that mechanism has been prepared but
commeneted out, due to bugs, that I will not fix at this point
due to a lack of priority.
coordinator: Added a deleteIcon() and getActiveIconSet() function
Added a performCommand() function, that executes an IconSetCommand

The command is then stored in the IconSetOperators QUndoStack.
MainWindow determines the active Icon and emits the corresponding delete signal.
Updated the UML.