Abstract factory skeleton

#4

* created an enum class for types of shapes you can create
* created abstract factory (ShapeCreator) and concrete factories (LineShapeCreator, etc.) meaning the rational rose model file should changed a bit (tried to make it like the pizza factory problem)

There aren't much shapes anyways so I think having a factory for each shape shouldn't be too altering. At least stuff is encapsulated to fullest extent.