Add elastic free energy material

Adresses #4269. 

This PR finally adds ```tensor_mechanics``` as a dependency to the ```phase_field``` module. The reason being that the ```DerivativeBaseMaterial``` is in ```phase_field```, and the material class generates a free energy for a phase field calculation, but it uses the ```RankTwoTensor``` class from ```tensor_mechanics```. One alternative could be moving the tensor classes into framework.
@permcody is going to get mad again if you don't declare your loop counters in-line...