With datasets stored by uuid, a dataset's uuid is where its file lives.
A job could set its output's uuid through tool-provided metadata
(galaxy.json), and Galaxy applied it when finishing the job and in the
extended metadata script. An upload could likewise request any uuid,
including one already in use.
Set a requested upload uuid when Galaxy creates the dataset instead,
after checking that it is a valid uuid no dataset has yet, and stop
applying a uuid from tool-provided metadata. The upload tool no longer
passes the requested uuid back through galaxy.json, so the library path
upload sets it before creating the dataset as the other uploads do.