Modified SmoothCircleIC for issue #2853
Merge pull request #2877 from tonkmr/feature_2853

Modified SmoothCircleIC for issue #2853
Enhancing FEProblem::reinitMaterials() interface

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

Refs #2379.
Reinitialize materials before computing Dirac kernels.

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.
Make MaterialData::swapBack() more robust.

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

Refs #2379.
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.
Adding an expect_err test which demonstrates attempting to use a
stateful material property with a DiracKernel.

Refs #2379.