[WIP] Add LayoutableInterface + implementation for Graph

Add `LayoutableInterface` + implementation for `Graph`
[This is a resurrection of #22 which was closed inadvertently]

TODO:
- [ ] Deprecate `GraphViz::setLayoutBy()`
- [ ] Documentation
- [ ] Tests
- [ ] Changelog