Validate direct Dat arguments in par_loop call

Previously, we did not check that direct Dats were defined on a dataset that
matched the iteration set of the par_loop.  Change this behaviour and add a
test for it.