Civi::paths() - Decouple settings from paths. Allow path vars.
There has been a policy underwhich paths and URLs are assumed to be relative
to different points (urls => webroot; paths => sites/*/files/civicrm). For
some settings, this is fairly confusing. The policy had been encoded in
`SettingsBag::getPath` and `SettingsBag::getUrl`. It's particularly
confusing because (sometimes) the default value of a specific property isn't
really aligned with the policy.
This revision attempts to cleanup in two ways:
1. It removes policy from `SettingsBag` and puts it in `Civi\Core\Paths`.
2. It makes the policy less important by allowing variables in the paths.
* `[civicrm.files]/upload` might evaluate to `/var/www/sites/default/files/civicrm/upload`
* `[cms.root]/myuploads` might evaluate to `/var/www/myuploads`
The revision also updates MagicMerge to store various path and URL policies
in `getPropertyMap()` rather than adhoc callbacks.