Move custom rf class outside the combsimp definition

This fixes, or rather, works around, a bizarre caching issue involving classes
defined inside functions.  See the discussion on pull request #1710.
Fixes #2676 : Convert Matrix to NumPy Array with NumPy dtype

Exposes dtype to the user. Default dtype is 'object'.
Rename d_type to dtype
Added tests for matrix2numpy
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
add evaluate context manager
Extend use of global_evaluate
Add cacheit decorator back onto AssocOp.__new__
cacheit inspects global variables
Extend global_evaluate

Find cases like def foo(..., evaluate=True)
FiniteSet plays well with evalaute=False