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.
Please leave out the `const` in `const bool`. There is little point in declaring a function parameter that is passed by value as `const`.