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.
Unwanted newline at start of function.