Как уменьшить связанность классов?
Точка не должна знать, какие у приложения настройки и в какой контейнер ее запихнули.
Это контейнер должен уметь выдать список того, что в него запихнули, а рендер - знать настройки.
Вы слишком много логики засунули внутрь классов, от которых требуется только хранение координат и пар (или списков) точек. Вот и мучаетесь теперь с ними.
Поможет перестать мыслить плоско и использовать диаграмму классов. К проектированию все это не имеет отношение. 
Прочитайте про декомпозицию систем, уроню декомпозиции, теория систем, SOLID.
Как я понял, вам нужно сделать модуль парсера.
Point, Edge, Graph - это не программные сущности, а просто структура данных без функционала. Им точно не нужен Container.
Parser - универсальный модуль, который может серилизовать и дессерилозвать, любые абстрактые данные. Его уже можно разбить на модули для записи и чтения файлов или на парсеры конкретных объектов. 
Модули нижнего уровня декомпозиции не могут ссылать напрямую к модулях верхнего уровня. Все связи должны идти сверху-вниз. А вот уже на такой структуре можно применять инверсию зависимостей.