Cache PETSc vectors created from Dats on the Solver

Cache a PETSc vector created from a Dat based on its dimensions and memory address on the Solver object.

[Buildbot pass](http://buildbot-ocean.ese.ic.ac.uk:8080/builders/pyop2-testing/builds/210)