Rewrite of assembly cache
Added unit test for assembly cache
Removed assembly cache mechanism; only versioning is now in PyOP2
Modification to _op for Dat objects to properly support subclasses
Fix lint errors
Merge fail
test_versioning now fails rather than crashes
Ensure touching Dat.data bumps the version number.
Default to zero initial version only when no data provided.
Make copy on write testing more robust.

Copy on write testing was using identity of numpy array objects as a
proxy for identity of the underlying data. This is unsafe as many
array objects can point to the same data. This commit fixes this.
Clean up constant used in test