Introduce new line segment functions including `hat_generator`
Minor code cleaning
Rename linesegments => line_segments
Fix line_segments unit tests
Add tests for hat_point_generator and hat_generator
Polygons are lists of points, not lines, duh.
Add new hat_generator and visualise it.
Allow segments_generator to have different to_visit() per type
Some minor fixes to previous commits
Refactor new code into `determine_text_centerlines`
Some minor comment rearrangement
Don't use _ as an unnamed variable