Moved ZeroTensor into a separate header file to reduce compile time dependencies.
Moved permute operator for Tensor from tile_op/permute.h to tensor.h.
- size_array.h now depends on permutation.h instead of vise versa.
- Removed inline function dependencies in Permutation.
- Fixed the return type for std::vector in some free functions.
ContractReduce now correctly uses the permute() member function of the tile to permute.
Fixed include guards and the author name in the documentation.
Removed unnecessary include directives in many files.
Added a scale and permute expression test.