Added a *GEMM helper object that provides information and helper function that help convert tensor contraction into *GEMM operations.
- Added a param type to set the type function parameters.
- Removed type add_const_to_nonnumeric.
- Added a PlusConst functor.
- Functors now use param type to set the type of the parameters.
- Removed unnecessary copy constructors and assignment operators.
Added new arithmetic interface to Tensor.
ContractReduce now uses the Tensor::gemm interface and the GemmHelper object.
Tile operations now use the Tensor arithmetic interface.
Simplified the shape modification interface to be more like the Tensor arithmetic interface.