add dot printing
remove unnecessary pydot import
support styles keyword in dotprint
sorted dict printing - better doctests
sort node/edge strings by length
add test_dot.py
atom, polymorphism, and depth
latex(Mul()): Deal with integer coeff.
latex(Mul()): Deal with short and long fractions.

- Print short fractions as p/q
- Print long fractions as \frac{p1}{q} (p2), where p1 is a coeff
  and p2 is e.g. an Add.
Implement and use _needs_mul_brackets.

This is used to determine if a term appearing in a Mul needs to
have surrounding brackets or not.
Some simplifications and comments.
Use mul_symbol instead of a space as separator.
Render the allowed numer/denom ratio for long fractions customizable.
fold_short_frac defaults to True for inline and False otherwise.
Let _print_Mul handle expr raised to negative powers.

Fixes issue 2576: latex(1/x**2) should return a \frac
http://code.google.com/p/sympy/issues/detail?id=2576
Add latex printing tests for fractions.
latex(Mul()): Don't special-case coeff.

Print x/2 as \frac{x}{2} instead of \frac{1}{2} x. This makes it
consistent with str and pretty printers and simplify the code
quite a bit.
Refine needs_mul_brackets.

Use expr.has() instead of isinstance to account for e.g.
Mul(2, Integral(x, x)) which needs brackets.
Changed SPDE from recursive to iterative

changed SPDE function from recursive to iterative as it is called in most of the other functions like(rischDE ,paramrischDE etc)  which on a recursive call makes it difficult to compute ouput because of recursion limit getting exceeded
dotprint traverse handles non_Basics