[WiP] Allow SCM to work with non-AbstractProject

Experimental work to generalize `SCM` and related classes to be usable for example from `WorkflowJob`.