MohrCoulombExponential added and MohrCoulomb tests modified accordingly

MohrCoulombCubic added, and a test showing its correctness

Fixes #3965
WeakPlaneTensile now has strength = 1, and
WeakPlaneTensileCubic has cubic hardening/softening, and
WeakPlaneTensileExponential has exponential hardening/softening

Test files modified accordingly, and a test of the Cubic version included

(This commit also includes some changes needed by a rebase from upstream)

This addresses #3965 , but does not completely fix it, but it's convenient
to request a merge now in order to work on other related things
Merge pull request #4112 from WilkAndy/rework_harden_3965

Rework harden 3965