Update latex printing of Rotation

Update Rotation operator to use \mathcal to render with LaTeX
Implement new printing scheme for QExpr

The new printing system is as follows:

- The base QExpr printing methods call _print_contents. The
  _print_contents methods is where classes define a unique list of
  arguments to print as the contents. Note, this should not include
  outer parentheses or brackets.

- By default, _print_contents returns _print_label.

- _print_label should not be modified in the base classes, it is
  reserved for printing the label of the class, which in almost all
  cases is the args list.

- Adding other things to the printing of the object, such as an operator
  name to operators or brackets to states, the class should override the
  _print/_pretty/_latex functions directly and make calls to
  _print_contents. This allows things like InnerProduct to easily
  control its printing.
Fix printing of unicode characters when use_unicode=False

Fix cases where unicode strings were returned when pretty printing when
in a non-unicode environment.
Change state and innerproduct printing to allow for tall states

Add methods to allow for the creation of tall bras and kets using box
drawing unicode characters and slash/backslash.
Better latex printing of operators

Modify operator printing to put \left and \right on surrounding
parentheses.
Add cg tests, fix up cg printing

Add Wigner6j and Wigner9j tests

Refactor printing methods in cg.py.
Improve printing states and brackets

Refactor how pretty printing of brackets for states is handled, moving
all logic for handling ascii vs unicode rendering and determining how to
render the brackets based on the height to a single method in StateBase.
This greatly simplifies the code in the state and innerproduct pretty
printing methods.
Fixup quantum printing tests
Merge branch 'master' into quantum_printing

Conflicts:
	sympy/physics/quantum/spin.py
3271: allow numbers from exponents to combine in simplify

Although factor_terms is used to change things like 2**(2+x) into
4*2**x, expand(power_exp=True) could be used, too. An added benefit
of using factor_terms is that a light factoring is obtained which leads
(IMHO) to aesthetically simpler expressions.
make sure that partitions is working with ints
Merge pull request #1318 from smichr/ints

make sure that partitions is working with ints
Merge pull request #1306 from smichr/powsimp

3271: allows numbers from exponents to combine in simplify
3267: limit watches for difficult Add terms

In cases as noted in the code, try see if the rational
form of the terms gives a result, and if so continue with the limit algorithm.
Merge pull request #1307 from smichr/3267

3267: limit watches for difficult Add terms
Remove use of integral attributes on the standard library Decimal class

The method ._is_special had to be left, because Python 2.5 does not have the
equivalent .is_finite().  The private methods had to be removed because they
are no longer there in Python 3.3.
Merge pull request #1321 from asmeurer/python3.3

Fix Python 3.3 issues - standard library Decimal class
Add docstrings for new quantum printing scheme
Merge pull request #1233 from flacjacket/quantum_printing

Quantum printing improvements
Make re and im call as_real_imag() (Fix Issue 754).

Since as_real_imag() uses re and im, its power was limited by the
fact that re and im were not able to call as_real_imag() in their
turn.  To cope with infinite recursion, a new hint was introduced,
which tells as_real_imag() whether to try to invoke re and im on
self or not.