Refactored FiniteStrainMultiPlasticity.

There are important, very subtle changes here in addition to the
refactoring that involve the residual2.

Also included more tests of the multi-surface stuff, and
relaxed tolerances in mohr-coulomb tests to get passes on different
architectures.

Fixes #3879
Merge pull request #3923 from WilkAndy/multi_tests_3879

Refactored FiniteStrainMultiPlasticity.
Merge commit 'b64b34dea3fedb67c58e00a9470ef852edf3c246'