omit processing only symbolic factors in denominators
Merge pull request #2023 from smichr/unrad

unrad and radsimp modifications
remove use of unevaluated objects from _expand_hint
Merge pull request #1967 from smichr/3731

issues 3710, 3731: expand fully
lxml instead of libxml2 for c2p, google app engine supports lxml and generally better supported
Changed title to be consistent with other Physics/Mehcanics titles.
Got bicycle example working by adding a q3 dynamicsymbol.
Gave the rolling disc image a more descriptive file name.
Gave the rolling disc image a more descriptive file name.
Gave the rolling disc image a more descriptive file name.
Updated documentation to reflect change in figure file name.
Got all physics mechanics tests to work again, in part by splitting them into more files.
Got all physics mechanics tests to work again, in part by splitting them into more files.
3070: remove Neg from cse_opts and use different mechanism

Some objects, like RootOf, don't interact well with the Neg mechanism
that cse uses to keep track of Adds that can have a -1 extracted.

1) wrapping an expression in Neg changes the perceived degree of the
expression for Poly (Poly(x**2) is degree 2 but Poly(Neg(x**2)) is
degree 1. Issue 3070 shows why this leads to an error.

2) if Neg is used like a kern so that y - x -> -Neg()*(x - y) that
still causes problems with RootOf because this creates a new generator:

>>> class Neg(Expr):
...   @property
...   def is_commutative(self): return True
...

Poly is ok
>>> Poly(Neg()*x)
Poly(x*Neg(), x, Neg(), domain='ZZ')

>>> RootOf(Neg()*x)
Traceback (most recent call last):
 sympy.polys.polyerrors.PolynomialError: <univariate message>

So instead of using Neg, an unevaluated Mul is simply used. Instead
of replacing y - x with -1*(x - y) (since that will be hard to find later
because Muls can have a leading -1) a leading (1, -1) is used instead:

>>> Mul._from_args([S.One,S.NegativeOne])
-1
>>> _.args
(1, -1)

Muls should not start with a leading 1 and even if something does
(because someone used an unevaluated Mul) the storage of the -1
will make the replacement correct in terms of mathematical equality,
1*-1*x is eventually replaced with -x.
Merge pull request #1994 from smichr/3070

3070: remove Neg from cse_opts and use different mechanism
empty line made quality test fail
in ``roots_cubic`` simpler solution of ``x**3 + q = 0``
added ``_try_rescale`` in ``roots``

```
>>> from sympy import *
>>> from sympy.abc import x
>>> eq = expand(((x**2-1)*(x-2)).subs({x:x*(1+sqrt(2))}))
>>> solve(eq, x)
[-2 + 2*sqrt(2), -1 + sqrt(2), -sqrt(2) + 1]
>>> count_ops(_)
10
```
while in master ``count_ops`` gives 732
call ``roots`` after ``_try_rescale``
added test