Making effective permeability and diffusivity methods, more user-friendly.

Now they can return tensor or dictionary, depending on the arguments for
face1 and face2 which user sends. If there is no argument for face1 and
face2, it will return a tensor[3,3], otherwise it returns something like
this:
{ 'top/bottom' :  array([value1]),  'left/right':  array([value2]) }