Allow including sources besides `local` from the project directory

Occasionally, it can be useful to include a tarball from the project directory. You may want to, for example, add a handful of symlinks that will turn a flatpak runtime into a usable sysroot. Currently, the only way to do so is to specify the absolute directory to such a tarball in a tar source with the file:// url pattern.

This makes it impossible to share the resulting .bst file without an accompanying script that normalizes this path.

We have an example of this in the integration test suite here - the {project_dir} variable is expanded on-the-fly using python code.

This already partially possible with the local plugin - it's just not possible to do any processing on these sources, so users have to include a normal directory. This is often not sufficient. Git, for example, does not store permissions, which may cause a project to break when it is committed.

One way to solve this would be to add a %{project_dir} variable to buildstream that automatically resolves to the project directory. Users could then specify paths such as file://%{project_dir}/files/sysroot.tar.

The addition of SourceTransform would probably also solve this, but I believe that a slightly simpler solution would be more user friendly here. Why would I need to learn about "SourceTransform" elements if I just want to include a file from my repository?