Staging the infra of a basic PDE Solver
Minor Change
added ``minimal_polynomial_sq`` and ``nthroot``

``minimal_polynomial_sq`` returns the minimal polynomial for the
``nth-root`` of a sum of surds.

``nthroot`` computes a real ``nth-root`` of a sum of surds.
Added util.py- helper functions
Made all changes except ode_order
modified ``minimal_polynomial`` to call ``minimal_polynomial_sq``;
solved issue 2895
Improved documentation and cleaned up test failures
code cleanup
Updated sphinx docs
Implemented TODO's
faster minimal_polynomial for sum of surds
minimal_polynomial_sq renamed _minimal_polynomial_sq
theano print Matrix and ImmutableMatrix
Merge pull request #2013 from mrocklin/theano-matrix-print

Print SymPy Matrix to Theano
Updated sphinx docs
Minor sphinx fix
Changed the numerical test in ``minimal_polynomial_sq``
Merge pull request #1970 from Manoj-Kumar-S/pde

Staging the infra of a basic PDE Solver
added ``_choose_factor`` and an example of minimal_polynomial using
high precision
faster numerical evaluation in ``choose_factor``
Merge pull request #1993 from pernici/nthroot

nthroot of a sum of surds