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.
According to the coding standard used, this should be formatted as follows:

    if (mNewMapObjectItem->mapObject()->polygon().size() >= 3)
        CreateObjectTool::finishNewMapObject();
    else
        CreateObjectTool::cancelNewMapObject();