initial attempt
working on
tests pass, refactory in progress
fixed substitution bug and added tests
hash function restored
merged with master
fixes
metric bug fixed, various refactories
inverse metric bug fixed; Kronecker Delta now can have data
tested TensMul.__call__ on contracted tensors
Modified LagrangesMethod.rhs() to use _mat_inv_mul

This was a TODO, and is more consistent with the KanesMethod
object.
Fixed tests for lagrange

Accidently ran test suite on the wrong branch before committing.
Fixed a couple errors, and added a simplify step to one of the
tests. Looks like this method of solving may result in a less
simplified expression depending on the input.
Fixed doctest for rollingdisc_example_lagrange

Fixed the doctest to pass after this change. Fixed code quality
issue in lagrange.py.
Refactored mat_inv_mul into separate function

mat_inv_mul has been moved to functions.py. Test has been moved
to test_functions.py. KanesMethod and LagrangesMethod classes
have been modified to reference this function. Link for inv() method
has been added into the docstrings of rhs() in both these classes.
Deprecated method kwarg in LagrangesMethod.rhs

Added deprecation warning for method kwarg for LagrangesMethod.rhs.
Changed mat_inv_mul to _mat_inv_mul.
removed destructors, they were renamed to experimental methods
restored deprecated VTIDS
Merge branch 'master' into tensor_substitute_bug
refine passes on non-Basics
add and register refine_MatMul