Try to improve readability.
Extract duplicate logic into a parent class.
Use #fail instead of #raise.
Reduce duplication between Repository modules.
Fix path.
Remove guard.
Rename Coordinate to Geometry.
Extract to methods.
Blank log each time it is opened.
Update to handle arrays of lines.
Rename method names, add event system;

Some methods name collide with Array/Enumerable and might cause confusion in certain circumstances. (e.g. when triggering an event which is part of an iteration, when calling #next will move to the next iteration.)
Rename EventRepository to Events, also;

- Add debug logging (disabled by default to Event.)