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.