## Description
* logic to split escaped path strings into elements
* wire up validity checks/struct construction
* tests for both invalid and valid path strings
## Type of change
Please check the type of change your PR introduces:
- [x] 🌻 Feature
- [ ] 🐛 Bugfix
- [ ] 🗺️ Documentation
- [ ] 🤖 Test
- [ ] 🐹 Trivial/Minor
## Issue(s)
<!-- Can reference multiple issues. Use one of the following "magic words" - "closes, fixes" to auto-close the Github issue. -->
part of #671
merge after:
* #648
* #689
* #690
## Test Plan
<!-- How will this be tested prior to merging.-->
- [ ] 💪 Manual
- [x] ⚡ Unit test
- [ ] 💚 E2E
Multiple unescaped trailing path separators should be trimmed from input elements so there are no empty elements or trailing unescaped separators at the end of the path or between elements
* Rewrite basic path logic to be simpler
Make basic path logic deal only with path elements instead of elements
and segments. Upper-layer logic can deal with elements.
Base path logic does not require a complete resource path as would be
seen by kopia, it just manages splitting/joining/escaping path elements.
Will have transformers to go from a basic path to a resource specific
path in a follow up.
Remove upper-layer logic for now to reduce load while reviewing as it
also changed slightly. Will be re-added in a follow up
* Function and tests for returned unescaped elements
* Regression test and fix for empty segment bug
If a raw segment had no elements that had length > 0 or just didn't have
any elements it would still create a segment, throwing everything else
off. Explicitly test for that now.