Refactor NumericVector::insert()

Add an insert() overload that takes const T* input; this now forms the
underlying implementation of several other overloads.

Move common insert() overloads into NumericVector rather than defining
them redundantly in subclasses; use a using declaration when necessary
to prevent this from leading to hidden overloads.

Make those less-raw overloads inline and non-virtual; particular
subclasses should find it sufficient to overload the T* method.