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.