DenseVectorBase::empty(), const T & operator()

empty() adds a missing STL-like function.

Returning a reference in both const and non-const accessors lets us
easily pull out a valid T* for use in other APIs.
PetscVector<T>::insert specializations

If we have a whole N-vector of values to add, we can add them all with
1 PETSc call instead of N.
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.
Merge pull request #411 from roystgnr/performance_tweaks

PetscVector::insert performance tweaks
Store node pointers in Side

This means that get_node(), point() can now be much simpler and can be
inline instead of virtual.
Avoid allocation in dof_indices()

We may need a temporary vector in the TRI3SUBDIVISION case but we can
avoid it in the common case
Close up PerfLog on every function return

This fixes a miscellaneous_ex11 bug with PerfLog enabled