Fix issues when calling methods from SmallVector that insert or append an item already inside a SmallVector where by the reference is invalidated when the container grows.
For example SmallVec.push_back(SmallVec[0]) If this call causes the vector to grow, SmallVec[0] will now be referencing invalid memory.
This also slightly speeds up SmallVec::Insert by only moving data after the insertion point once when the container grows.
This addresses https://bugs.llvm.org/show_bug.cgi?id=12728 and https://bugs.llvm.org/show_bug.cgi?id=16253
clang-tidy: warning: invalid case style for function 'grow_size' [readability-identifier-naming]
not useful