Fixed error in tests in mechanics.

Some tests in mechanics (or rather, various versions of one example problem)
had an error in the definition of the _kinematics_ of the rolling disc.
However, if you did the derivation by hand and also made this error (the
improper application of the 2-point theorem for acceleration for the rolling
w/o slip case) you would also get this error. That is the reason why the
original hand-calculated values matched the SymPy output. All is fixed now.

Additionally, the kinematic differential equations are calculated, rather than
being hard-coded. This should be more robust and less likely to be a source of
confusion/error in the future.
Also added eigenvalue test to mechanics.

In the rolling disc example test file, now the eigenvalues are checked against
benchmark values. For all parameters equal to unity and an upright disc, the
linearized equations have a critical point (all eigenvalues are 0) at 1 /
sqrt(3). This is now checked.
Fixed test in mechanics.

The test was written to check eigenvalues, which return a dictionary. These
eigenvalues are (all) supposed to be 0. The issue was that the 0 in the test
wasn't comparing to a SymPy 0 - fixed by comparing to S(0).
Fixed mech test failing?

One of the corrections to the tests seemed to fail on all the Python versions
except 3.2, which happens to be what I'm developing on. I've changed the
assertion from an equality test to a subtraction/expand/0-equality assertion -
I think this should make it more robust. I also tested it w/ python2.7,
successfully.
Implemented heuristics with the assumptions on xi and eta
1] xi = 0 2] eta = f(x) + g(y)
2] eta = 0 2] xi = f(x) + g(y)
Implemented abaco2_similar hint

1] It assumes xi = f(x), eta = g(x); xi = f(y), eta = g(y)
2] Corrected bug in NotImplementedError
3] Corrected minor bug in checkinfsol
Implemented abaco2_unique_unknown hint

1] Extended infinitesimals and checkinfsol for cases where the ODE
is not explicitly in the form a*df + b
2] Implemented abaco2_unique_unknown hint which assumes presence
of unknown functions and non-integer powers,
xi = f(x), eta = g(y); xi = f(y), eta = g(x)
Implemented the following heuristics:
1] General case for the unique abaco2 heuristic
   xi = f(x); eta = g(y)
2] Linear heuristic
   xi = a*x + b*f(x) + c; eta = f*x + g*f(x) + h
Made the following changes
1] Added docstrings for linear, abaco2_general case
2] Reordered heuristics
Eliminated DeprecationWarning from test_pickling.
Changed .next() to next()
Fix issue 3744: simplify nseries output with factor_terms()

    The calculate_series should always return a non-zero
    value for nontrivial expression.  Let's do some cheap
    simplifications to check the result is not zero and
    call nseries() with increased n if it is.
Drop workaround for issue 3744 in limit()
Add._eval_as_leading_term(): check for zero output

    _eval_as_leading_term should always return a non-zero value
    from nontrivial expression.  Lets substract the returned
    expression (equal to zero) from the original one an restart
    _eval_as_leading_term() calculation.  See also issue 3744.
Fix failing test in test_integrals.py
(-1)**n is integer for integer n
abs((-1)**n) = 1 for integer n
Evaluate sin(pi*n/2) for integer n
Evaluate cos(pi*n/2) for integer n
Implement Add.is_rational method