Construct tensor mechanics material names using DerivativeMaterialInterface

This improves the naming of tensor_mechanics material properties by introducing a base_name (to enable the use of multiple phases) and the use of the ```DerivativeMaterialInterface```. Adresses #4300.

**This needs a corresponding MARMOT (and possibly Hyrax) update**