Add test for the type of the Dat.dtype property
Build correct type for Dat.dtype if no data is supplied

We pass in a numpy type specifier for dtype which has, for example type
numpy.float64, but expect the Dat._dtype field to have type
numpy.dtype.  If no data were supplied, accessing a Dat's dtype property
would return the former, not the latter, which breaks code generation.
Fix this by converting to the correct type in the constructor.  We can
now always use the Dat._dtype field to return the dtype property.
Implement __radd__ and friends on Dats

This allows us to write x = scalar + dat, if that is more natural than
dat + scalar.