io.pathnames: Allow vocab: to find paths that do not exist as long as the vocab exists.
`"benchmark/sum-file/sum-file.txt" vocab-path` can now reference a file
in a vocab.
Add `has-path-extension?` word which ensures a path is not a
directory (does not end in / or any path-separator), and if
that's the case then it is true if there's a dot in the file name.
The cases we check in vocab-path (triggered with vocab:)
- if path ends in /, we assume it must be a vocab that exists
-- you can't create a vocab that doesn't exist with vocab:foo syntax
because there the root is ambiguous
- if path has extension, we assume it's a file name and allow it
to look up if the parent vocabulary exists
- finally we just try the current behavior, e.g. the vocab has
to exist
Added a lot of tests, please file bugs if you disagree!