Cache the PETSc vector on the Dat
Explicitly mark solution vector as dirty after solve

Do not access data attribute on Dat when returning vector, to not mark
the Dat as writable. Requires explicitely marking the Dat as dirty
when written.
Merge pull request #158 from OP2/vector-caching

Cache PETSc vectors created from Dats

Cache a PETSc vector created from a Dat based on its dimensions and memory
address on the Dat object.