Enhancing FEProblem::reinitMaterials() interface

You can now specify whether or not the 'swap' step for stateful
materials occurs.

Refs #2379.
Change Element so that it does not dervie from Material, ref #2960
Error checking for crack tip nodeset with multiple nodes in 2d closes #2963

For the case where the J-Integral is evaluated in 2d (even in a 3d model),
only only allow the crack tip nodeset to contain multiple nodes if they're
collinear.

Also, use range-checked parameter for 2d axis.  I had to change the name of
the parameter from 2d_axis to axis_2d to make the range checking parser happy.
Merge pull request #2964 from bwspenc/j_2d_error_check

Error checking for crack tip nodeset with multiple nodes in 2d
Merge pull request #2962 from jasondhales/solid_mech_2960

Change Element so that it does not derive from Material, ref #2960
Recompute MaterialProperties for DiracKernels

* Reinitialize materials before computing Dirac kernels, but only
  if those DiracKernels actually call getMaterialProperty().

* Adding MaterialPropertyInterface::statefulPropertiesAllowed(bool).
  This allows classes derived from MaterialPropertyInterface to declare
  that they do not work with stateful material properties.  The only
  class which currently uses this functionality is the DiracKernel.
  The various getMaterialProperty*() interfaces have been updated to
  throw an error is stateful material properties are not allowed and the
  user asks for them.

  Note that only the MaterialPropertyStorage object knows if it has
  stateful material properties, so we had to provide an accessor from
  the MaterialData object which contains it that could be accessed by
  the MaterialPropertyInterface.

Refs #2379.
Make MaterialData::swapBack() more robust.

Only swap back if the MaterialData has been swapped in the first place.

Refs #2379.
Adding MaterialPointSource and associated test.

It is a DiracKernel test that uses a MaterialProperty, as has been
implemented by an earlier patch on this branch.

If uncommented, the print statement in
MaterialPointSource::computeQpResidual() should show that the
MaterialProperty is being correctly evaluated at the DiracKernel
point.

Refs #2379.
Adding an expect_err test which demonstrates attempting to use a
stateful material property with a DiracKernel.

Refs #2379.
Slightly more robust error checking in SolidModel to avoid dereferencing a NULL pointer.

Refs #2379.
Regolding Richards Dirac bh07 test.
Merge pull request #2967 from jwpeterson/material_point_source

Compute Material Properties at DiracKernel points
Ticket #2974 : all dirac tests checked and everything looks ok
Addresses issue #2925 .  I have changed things to use Function & func , and used default values of optional functions.  Also added some doxygen doco
Merge pull request #2978 from WilkAndy/feature_2925

Addresses issue #2925 .  I have changed things to use Function & func , ...
Merge pull request #2977 from WilkAndy/feature_2974

Ticket #2974 : all dirac tests checked and everything looks ok