polys: Use rational numbers instead of floats to avoid OverflowError

In [1]: a = (x**45 - 45*x**44 + 990*x**43 - 1)

In [2]: b = (x**46 - 15180*x**43 + 9366819*x**40 - 53524680*x**39 + \
   ...: 260932815*x**38 - 1101716330*x**37 + 4076350421*x**36 - \
   ...: 13340783196*x**35 + 38910617655*x**34 - 101766230790*x**33 + \
   ...: 239877544005*x**32 - 511738760544*x**31 + 991493848554*x**30 - \
   ...: 1749695026860*x**29 + 2818953098830*x**28 - 4154246671960*x**27 + \
   ...: 5608233007146*x**26 - 6943526580276*x**25 + 7890371113950*x**24 - \
   ...: 8233430727600*x**23 + 7890371113950*x**22 - 6943526580276*x**21 + \
   ...: 5608233007146*x**20 - 4154246671960*x**19 + 2818953098830*x**18 - \
   ...: 1749695026860*x**17 + 991493848554*x**16 - 511738760544*x**15 + \
   ...: 239877544005*x**14 - 101766230790*x**13 + 38910617655*x**12 - \
   ...: 13340783196*x**11 + 4076350421*x**10 - 1101716330*x**9 + \
   ...: 260932815*x**8 - 53524680*x**7 + 9366819*x**6 - 1370754*x**5 + \
   ...: 163185*x**4 - 15180*x**3 + 1035*x**2 - 47*x + 1)

In [3]: intervals(a*b)
Out[3]: [((0, 1/2), 1), ((2/3, 3/4), 1), ((3/4, 1), 1), ((6, 7), 1), ((24, 25), 1)]

Fix suggested by Heiner Kirchhoffer.
Made GA_Printer robust against exception abort.

GA_Printer is now a context handler.
If used in that way, it will clean up after itself even in the presence of exceptions.

Made all uses of GA_Printer use the "with" form.
Suggested fix for __int__ function of class PythonRational in order to enable it to work with large numerators/denominators.
Added issue numbers to @deprecated annotations.
Issue and version numbers corrected.
Define all the __rop__ logical operators on Boolean

Now things like True & x work.
Move rcall from Expr to Basic

This lets it work on non Expr objects, such as booleans, like And(Q.real,
Q.positive).
Marked sympy.galgebra.ga.ga_print_on/off as functions for interactive use.

Updated all uses of these functions to use the GA_Printer() context handler.
Add a test for the QQ integer conversion
Also test for overflow

Previously this would raise:

OverflowError: long int too large to convert to float

Now it just works.
Import cleanup: remove unused, merge multiple if from same module
Merge pull request #2541 from certik/HeinerKirchhoffer-fix-root-isolation-bounds

Heiner kirchhoffer fix root isolation bounds
Merge pull request #2490 from toolforger/contextualize-ga-printing

Made GA_Printer robust against exception abort
Merge pull request #2507 from asmeurer/rbool

Define all the __rop__ logical operators on Boolean
Merge pull request #2512 from asmeurer/rcall-Basic

Move rcall from Expr to Basic
Merge branch 'direct-imports-and-cleanup' into eliminate-duplicate-imports

Conflicts:
	sympy/concrete/tests/test_sums_products.py
	sympy/core/tests/test_sets.py
	sympy/core/trace.py
Merge branch 'master' of git://github.com/sympy/sympy into eliminate-duplicate-imports