Import zip_longest into compatibility

Instead of importing zip_longest (or izip_longest) into Basic, they are
imported to compatibility and it is ensured they have the same name in all
Python versions: zip_longest
Changed some Dummy substitutions.

Previously, when taking the derivative of something like:

f(f(x)).diff(x)

You receive a Subs(Derivative(...), (..), (..)) object which uses dummy symbols
at the point the derivative is taken at.
What this change does makes it so that the dummies in this example are given a
.dummy_index attribute which is equal to the hash of the object they are
replacing.
That way, f(f(x)).diff(x) == f(f(x)).diff(x).

This also fixes the error w/ cacheless operation w/ the diffgeom module.

Also, removed XFAIL from test for issue 1612.