Update of material mix_by functions such that density is updated accordingly.

Updated mix_by fucntions in material.pyx such that when we mix we update the density of the resultant amalgamated material. Tests are added to verify that this is correct.