Single Python 2 and 3 compatible codebase

Refactor the codebase to be both Python 2 and 3 compatable. Main changes
include:

- Absolute imports with leading `.`.

- Python 3 print function rather than print statement.

- String in Python 3 are always unicode, so unicode related functions
  have been removed.

- Integers in Python 3 are always "long", `long` methods and suffixing
  long numbers with `L` are not supported

- `map`, `filter`, and `range` return iterables rather than lists, where
  needed, wrap these calls in `list()`. As such, the Python 2 iterable
  forms of these, such as `xrange` and `ifilter`, have been removed.

- `exec` is a function rather than a statement.

- Iterators in Python 3 do not have `.next()` methods. Instead, `next()`
  can be used (Python >=2.6).

Changes related to Python 2 and 3 compatibility are in
sympy.core.compatibility.