Add Eigen optimizations for DenseVector::l2_norm(), l1_norm(), linfty_norm().
Add Eigen optimizations for DenseVector::l2_norm(), l1_norm(), linfty_norm().

The basic idea is to use Eigen::Map, which allows you to treat a
dumb array as an Eigen object, and call functions on it.  The speedup
over our hand-coded norm calculations are on the order of 3-4x for
large vectors. Admittedly this is not a common use case for
DenseVector, but the general idea should also apply to DenseMatrix
calculations, where in some cases Eigen may be faster (and easier to
use) than BLAS as well.

Some representative timings from _before_ the optimization (after the
optimization, the libmesh times are all comparable to the Eigen timings):

N=1e6, L1 norm
Eigen:   0.006175, 0.000341, 0.000302, 0.000405, 0.000338
libmesh: 0.011737, 0.001111, 0.001138, 0.001104, 0.001139

N=1e6, L2 norm
Eigen:   0.000293, 0.000312, 0.000407, 0.000561, 0.000492
libmesh: 0.000971, 0.000890, 0.001035, 0.001095, 0.001163

Remarks:
.) Eigen::VectorXd and VectorXcd use double as their underlying
   numerical type, therefore we only enable these optimizations when
   Real==double.

.) BLAS-based optimizations, e.g. for l2_norm()

   const PetscBLASInt N = _val.size();
   const PetscBLASInt INCX = 1;
   return std::sqrt(BLASdot_(&N, &_val[0], &INCX, &_val[0], &INCX));

   were also investigated, but at least for the reference (aka
   unoptimized) BLAS implementation I was using, the speedups were not
   worth the trouble.  Also, there is difficulty with supporting the
   complex-valued case, which Eigen handles more or less seamlessly.

benkirk/libmesh,90jrong/libmesh,90jrong/libmesh,benkirk/libmesh,balborian/libmesh,hrittich/libmesh,benkirk/libmesh,capitalaslash/libmesh,balborian/libmesh,roystgnr/libmesh,libMesh/libmesh,pbauman/libmesh,capitalaslash/libmesh,svallaghe/libmesh,roystgnr/libmesh,svallaghe/libmesh,90jrong/libmesh,90jrong/libmesh,giorgiobornia/libmesh,roystgnr/libmesh,svallaghe/libmesh,BalticPinguin/libmesh,svallaghe/libmesh,giorgiobornia/libmesh,jwpeterson/libmesh,90jrong/libmesh,pbauman/libmesh,libMesh/libmesh,libMesh/libmesh,balborian/libmesh,libMesh/libmesh,vikramvgarg/libmesh,balborian/libmesh,jwpeterson/libmesh,capitalaslash/libmesh,dschwen/libmesh,giorgiobornia/libmesh,pbauman/libmesh,benkirk/libmesh,vikramvgarg/libmesh,jwpeterson/libmesh,90jrong/libmesh,giorgiobornia/libmesh,capitalaslash/libmesh,jwpeterson/libmesh,roystgnr/libmesh,jwpeterson/libmesh,balborian/libmesh,90jrong/libmesh,vikramvgarg/libmesh,libMesh/libmesh,dschwen/libmesh,hrittich/libmesh,jwpeterson/libmesh,pbauman/libmesh,benkirk/libmesh,pbauman/libmesh,svallaghe/libmesh,giorgiobornia/libmesh,balborian/libmesh,BalticPinguin/libmesh,vikramvgarg/libmesh,roystgnr/libmesh,roystgnr/libmesh,vikramvgarg/libmesh,jwpeterson/libmesh,BalticPinguin/libmesh,libMesh/libmesh,balborian/libmesh,giorgiobornia/libmesh,giorgiobornia/libmesh,capitalaslash/libmesh,libMesh/libmesh,svallaghe/libmesh,balborian/libmesh,pbauman/libmesh,balborian/libmesh,dschwen/libmesh,vikramvgarg/libmesh,roystgnr/libmesh,giorgiobornia/libmesh,giorgiobornia/libmesh,benkirk/libmesh,BalticPinguin/libmesh,libMesh/libmesh,90jrong/libmesh,vikramvgarg/libmesh,capitalaslash/libmesh,jwpeterson/libmesh,svallaghe/libmesh,benkirk/libmesh,benkirk/libmesh,vikramvgarg/libmesh,BalticPinguin/libmesh,capitalaslash/libmesh,hrittich/libmesh,pbauman/libmesh,BalticPinguin/libmesh,pbauman/libmesh,hrittich/libmesh,svallaghe/libmesh,BalticPinguin/libmesh,vikramvgarg/libmesh,capitalaslash/libmesh,BalticPinguin/libmesh,balborian/libmesh,dschwen/libmesh,hrittich/libmesh,hrittich/libmesh,hrittich/libmesh,90jrong/libmesh,dschwen/libmesh,hrittich/libmesh,dschwen/libmesh,roystgnr/libmesh,dschwen/libmesh,svallaghe/libmesh,benkirk/libmesh,hrittich/libmesh,dschwen/libmesh,pbauman/libmesh