Polymorphic mapobjects

I extracted the object creation tools into separate classes, in preparation of the bezier tool. 
I hope I didn't make too bold changes.
Indentation a little off here and the `*` should be with the variable name in the coding standard I'm using (Qt / Qt Creator coding standard). Also the `()` of the constructor are superfluous when there are no parameters so please leave them out.