Combined add and inner product for vectors: add_and_dot

- Implemented a new method add_and_dot for all vector classes (deal.II's vectors,
  block vectors, PETSc, Trilinos vectors)
- Specialized function for deal.II vector that does add_and_dot in one sweep over
  the data by a new AddAndDot struct that is passed to the accumulate function. This
  also extends the other structs for inner products and norms by one (unused) argument.
- New tests for this feature.
- Added new do_vectorized operation to all accumulation operations that uses the
  operations of VectorizedArray<double/float> for the sums. This helps to reduce the
  operations and thus increase performance when memory transfer is not the limit.
  This functionality is called in the regular part of the accumulate function which
  now sits in its own method 'accumulate_regular' (length divisible by 32). This
  functionality can unfortunately not be realized by the OPENMP_SIMD pragma recently
  introduced because that leads to non-reproducible results when the vector memory
  starts at different memory locations. VectorizedArray is only supported on some
  platforms and thus this functionality may not be available everywhere. However, good
  code will be generated unconditionally (except on old machines from around 2004-2008
  where unaligned reads also from aligned memory are slow, but those are not relevant
  any more).
- To implemented vectorized pow operations, I also added a std::pow function for
  VectorizedArray.
- The memory for parallel::distributed::Vector is now allocated to 64 byte boundaries
  just as is the memory of Vector<Number>.
Resolve two conflicting partial specializations by adding a third, most specialized case.
Merge pull request #219 from rudraa/add-missing-partial-specialization

Resolve two conflicting partial specializations by adding a third, most ...
Merge branch 'master' of https://github.com/dealii/dealii
Merge pull request #213 from kronbichler/master

Combined add and inner product for vectors: add_and_dot
Fix a compiler warning with gcc-4.9

gcc-4.9 seems to be able to see that accessing p[1] in 1D is out of bound
for spacedim == 1 but it can omit the warning if accessed inside a switch
statement. Fix this warning (even though we won't use SphericalManifold
for spacedim == 1).
Further actions to make MatrixFree/FEEvaluation work in 1D

- Added test for matrix-vector product
- Made compile with clang.
Merge pull request #221 from kronbichler/master

Fix a compiler warning with gcc-4.9. 
gcc-4.9 seems to be able to see that accessing R[1] in 1D is out of bound
for spacedim == 1 but it can omit the warning if accessed inside a switch
statement. Fix this warning (even though we won't use SphericalManifold
for spacedim == 1).
Merge pull request #222 from kronbichler/matrix_free_1d

Further actions to make MatrixFree/FEEvaluation work in 1D
Update the documentation about requiring at least Trilinos 11.2
Merge pull request #220 from Rombur/trilinos_11_2

Update the documentation about requiring at least Trilinos 11.2
Add second template parameter to FE_Nothing.

For historical (and probably not very good) reasons, finite element classes
have a second template argument denoting the space dimension. FE_Nothing never
got this argument and so it wasn't possible to use it in codimension-one
situations. This patch adds the second argument to make it possible to use
it in these situations.

There is not much that one can test this element with, other than ensure that it
compiles. The next commit will actually use the element in a concrete situation.
Augment documentation.
Use an FE_Nothing instead of FE_DGQ(0).

We don't actually want to use any kind of finite element here at all,
but need to because FEValues requires us to when all we want are the
JxW values. FE_Nothing is cheaper to construct than FE_DGQ(0), so
use it in GridTools::volume().