Range-based TWG spec and BTAS implementation of Range and Tensor

This set of changes introduces the Range-based design of Tensor. Range formalizes the concept of index iteration, and separates it from the element iteration (currently provided by Storage). The new Tensor is more composable and has more functionality. E.g. configurable storage order (column and row major) are supported, as well as fixed size and fixed rank (e.g. TArray is now simply a type alias to Tensor). Separation of index and element iteration will allow to easily compose NDIterator as well as Tensor slices.

Also, doxygen documentation is started. It contains source docs + TWG docs (concepts, etc.).