Dat compares false if equality test raises AttributeError

In the Arg equality test, a Dat might be compared with a Mat, in which
case Dat.__eq__ is called and raises AttributeError. We want to
interpret this as meaning not equal.
Global compares false if equality test raises AttributeError

In the Arg equality test, a Global might be compared with a Dat, in
which case Global.__eq__ is called and raises AttributeError. We want
to interpret this as meaning not equal.
requirements.txt: explicitely require PETSc 3.3