Add API call to zero a Dat

Dat.zero() will now zero the data associated with a Dat.  To allow for
potential future loop fusion and the like, we do this by drinking our
own kool-aid and using a ParLoop to do the zeroing.
Add tests of new Dat.zero functionality
Remove code duplication

Add attribute _par_loop to Dat pointing to a backend-specific ParLoop
implementation (requires moving Dat declaration after ParLoop
declaration in backends) and call that in base.Dat.zero.
Use zero Dat API call in demos