NumericVector::add_vector refactoring

Similar to #411 and #413

This was originally intended to be just another additional T* API plus
a refactoring; however, the new PetscVector::add_vector(DenseVector)
code path should be a performance improvement as well.
Merge pull request #414 from roystgnr/numeric_add_vector

NumericVector::add_vector refactoring