Rework node provenance for synthetic nodes
Related to !1425 (merged) (https://gitlab.com/BuildStream/buildstream/merge_requests)/1425#note_186387325)
There are only two cases were nodes are set in the code (hence without provenance):
- When automatic variables are set by the core (e-g: max-jobs)
- when plugins call Element.set_public_data
The first case should never throw errors, so it is of limited interests. The second is more important. What should probably be done here is to have 'set_public_data' able of creating a fake provenance with the name of the plugin, the project and probably the element name.
Currently, we get the provenance from the element file, which does not contain the data.
We would therefore have much better error messages, and would be able to get rid of most synthetic nodes.