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.

*EDIT:* the first commit b7c643b is how I originally made it which kinda and kinda didn't make sense. Kept it just in case.
* also added default constructors to shapes