Big refactoring of segments and trails.

* Segments can now be "closed" or "open"
* Trails are "lines" or "loops", represented more correctly and tracked at the type level
* Add a new 'Located' wrapper for adding locations to translation-invariant things
* Change 'PathLike' to 'TrailLike', which now takes a Located Trail

Still more work to do with adding examples to the documentation, etc., but that can be done later.