Linearizer class now works with LagrangesMethod

Generalized the Linearizer class to work in the presence of
lagrange multipliers. This required the following changes:

- Modification to LagrangesMethod initialization to input
the holonomic and nonholonomic constraints separately. This is
different than the previous way of inputting all constraints in
`coneqs`, with the holonomic constraints time differentiated.

- Reformulation of the general Linearizer form. This changed the
`Linearizer` class methods internally, but not the interface.

- Pulled _find_dynamicsymbols method from KanesMethod to the
functions.py file, as it is used by both LagrangesMethod and
KanesMethod now.
Merge branch 'LinearizeClass' into LinearizeLagrange

Conflicts:
	sympy/physics/mechanics/linearize.py
Added `solve_multipliers` to LagrangesMethod

Added a function to solve for the value of the multipliers at a
given operating point. Returns either a dict of {symbol: value}
(default), or a column matrix of the solutions. Also added a test
case that has constraints to test this method.
Merge branch 'LinearizeClass' into LagrangeImprove

Conflicts:
	sympy/physics/mechanics/functions.py
	sympy/physics/mechanics/kane.py
	sympy/physics/mechanics/linearize.py
	sympy/physics/mechanics/tests/test_linearize.py
Added `linearize` method for LagrangesMethod

Created `linearize` class method for LagrangesMethod class.
Merge branch 'master' into LagrangeMerge
Added deprecation warning to LagrangesMethod

Added a deprecation warning to LagrangesMethod for the new interface of
hol_coneqs and nonhol_coneqs. Updated tests to reflect change.

Also added rolling disc test for lagrange.
spelling error in codegen.rst
spelling fix in codegen.py
Changed method finding func

The earlier method of finding func was incomplete. This new method is more robust and less likely to fail. This method is still in progress.
func modification to solve nonlinear sysode of 2 eq order1 type5

Earlier there was error comming in solving the type 5 of nonlinear sysode of 2 equations due to problem in function returned which was `[y(t), y(t)]`. This commit contain modification such as to remove that error. This also places the @XFAILed test back to normal.
Replaced `func` with `funcs` and vice versa

At some places func was used for many functions and funcs was used for single function. This commit replaces that in classify_sysode
Corrected comment
Fixes #7757
Merge remote-tracking branch 'upstream/master' into LinearizeLagrange
Small change in the doctests
typo fix in codegen test
Merge pull request #7760 from akshayah3/Line

Small change to the intersection method of a Line3D
modify 4 minute test so it takes about 2 seconds

Before original commit:
>>> series(cot(x**4 + x**5), x, 0, 1)
O(x)

After original commit
>>> series(cot(x**4 + x**5), x, 0, 1)
x**(-4) - 1/x**3 + x**(-2) - 1/x + O(x)

This simpler test failed in master before the original
changes but succeeds afterwards demonstrating that the
change worked. It also takes orders of magnitude less time
to compute.

Since the time that the correction was made, another correction
was made that includes the "+1" term; that is now included in the
modified test, too.
longer underline