merged branch into master

added TArray<M> as friend class to TArray<N>, so the shared pointer doesn't have to be returned.

move assignment uses swap now. For move constructor this didn't work.

removed the move-reshape function, this is replaced by the reshape function.
This combined with swap didn't work. So if I don't want to share the memory use the reshape_clear function.