Refactoring: Forward declarations, path painting in foillogic::Path, virtual destructors & const correctness.