Refactor implementation of Tensor<T> and underlying buffer stores to improve binary size and maintainability (#5836)
* refactor tensor buffers to make cleaner
* refactor to make tensor backing buffer implementation smaller and cleaner
* missed virtual on destructor
* remove unnecessary static_pointer_cast
* add string vector accessor
Co-authored-by: Sheil Kumar <sheilk@microsoft.com>