Introduce GraphFactory.

GraphFactory offers a way to instantiate graphs using reflection and a configuration file/object.
Merge remote-tracking branch 'origin/master' into graphfactory
Merge remote-tracking branch 'origin/master' into graphfactory
Merge remote-tracking branch 'origin/graphfactory'
updated CHANGELOG with GraphFactory work.