Pass soa property on Dat copy constructor
Fix state setting for data_ro accessor on device

We should only set the state to BOTH if the device data was already
allocated.
Use a par_loop to copy a Dat

Rather than copying the data array explicitly, use a par_loop to queue
up the computation.  This is in preparation for doing copies on device
correctly.
Add tests of Dat copy constructor
Merge pull request #246 from OP2/dat-copy-constructor

Do the right thing on device when copying a Dat using the constructor by
using a par_loop to do the copy.