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
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.
Fix the LaTeX printing test.

The previous behaviour of re(x + y) which did not expand to
re(x) + re(y) was inconsistent with the output of
(x + y).as_real_imag().
Make coth.as_real_imag() to work like in sinh, cosh, and tanh  (Fix Issue 2899).

When they decide they have a real argument, sinh, cosh, and tanh
all set the hint 'complex' to False before they invoke expand().
This commit makes coth do the same.
Add the tests for the cases that now work.

Comments 15 and 16 on Issue 754 show examples of cases which failed
before the changes introduced in the previous commits.
Remove XFAIL from the test for Issue 2899.
Add a couple more complex tests.

Previous commits have included some basic tests which showed that the
problems central to the examples shown in comments on issue 754 no
longer exist.  This commit tests those examples themselves.
Fill the newly added tests around the 80-character limit.
Merge pull request #1304 from scolobb/reim

Make re and im call as_real_imag()  (Fix Issue 754).
Merge pull request #1324 from smichr/solve

solve returns [] instead of None
'dict' and 'set' flags for canonical return structure