This extends build_assets_job to enable inserting nodes that run after the nodes that update assets.
This enables specifying dependencies between post-nodes and particular assets. An alternative approach that is more restrictive, but simpler, would be to say that post-nodes run after every asset-node has completed.
I went with this approach instead of the alternative approach, because I believe it's often useful for post-nodes to have data dependencies on asset nodes. For example, imagine a job that's built to run an email campaign. The job contains an asset that is a table of all the emails that should be sent out, and it also includes a post-node that sends the emails. The post-node that sends the emails should have a single input - the dataset of emails. Also, if there are assets in the job that summarize the emails table, those shouldn't hold up sending the emails.
Depends on D8969.