Problem/Motivation
Path aliases are currently represented as arrays. While this works OK it also comes with certain limitations. It is harder to document and extend. It is also prone to misuses/hacks.
Proposed resolution
We would like to have path aliases represented as objects with properly defined structure and business logic. It seems that going all the way to full-features content entities takes almost the same amount of effort while giving us even more goodies and flexibility.
Note about performance
Operating with an entity is heavier than just sending arrays around. This patch doesn't change any of the queries that happen in bootstrap phase (which is most sensitive to performance regressions). All the queries (even functions) stay the same. Same is true for URL generation.
Remaining tasks
- review patch
User interface changes
None.
API changes
Path alias arrays are converted to "path_alias" revisionable content entities