sympy.physics.quantum.pauli

This pull request contains a few minor fixes for the sympy.physics.quantum, and a new module for pauli operators, like sigma x, sigma y, sigma z, and the annihilation and creation operators sigma minus and sigma plus.

The pauli sigma operators are of course a special case of the angular momentum spin J operators, but I think they are deserve operator classes of their own because they are so commonly used. I have been looking at ways of making the new pauli operator classes subclasses of spin J classes, but I found that there was no advantage in doing that, because I had to reimplement all the methods and add new ones. However, earlier this summer when I discussed the  sympy.physics.quantum.fermion and sympy.physics.quantum.boson modules with @ellisonbg I also mentioned that I had worked a bit on these pauli operator classes and he recommended asking @flacjacket for advise and discussion on how these pauli operator classes could be related to the existing spin J operator classes.

So, @flacjacket, if you could have a look at this PR and give comments I would be very grateful. Also @ellisonbg  and @certik might be interested in having a look.

Here are a few ipython notebook that demonstrates a few applications of the new pauli operators implemented in this PR:

http://nbviewer.ipython.org/github/jrjohansson/sympy-quantum-notebooks/blob/master/lecture-sympy-quantum-two-level-system.ipynb

http://nbviewer.ipython.org/github/jrjohansson/sympy-quantum-notebooks/blob/master/lecture-sympy-quantum-atom-cavity.ipynb

http://nbviewer.ipython.org/github/eunjongkim/reproduced-papers/blob/master/Reproduce-PRA-80-033846-2009-Zueco.ipynb
I think that in this case, the type of simplification done here (for example sx * sy -> I * sz) is very useful to have done automatically, because these are identities, and I don't see any reason why anyone would prefer a long expression of pauli matrices over a simplified one. It is true that the simplification can fail for complicated expressions, but also for that case having these basic rules implemented in `__mul__` make it possible to use expand() and the standard simplify() to obtain a fully simplified form, instead of having to use a special function for simplifying pauli matrix expressions. For example, because of these multiplication rules in one can do things like this:

    >>> sx, sy, sz = SigmaX(), SigmaY(), SigmaZ()
    >>> e = (sx * sy) ** 3 * (sx + sy) ** 2 * sz * sy
    >>> e
    -I*SigmaZ()**3*(SigmaX() + SigmaY())**2*SigmaZ()*SigmaY()
    >>> expand(e)
    -2*I*SigmaY()

I think that this is very convenient and intuitive.