Smart Tensor

A ~~cumbersome~~ implementation of tensors/arrays that is shape-aware.

Any operation on tensors that changes its shape will give compile time error if the shape is not compatible ~~with very useful compile error messages~~.

VERY PRELIMINARY IMPLEMENTATION!