Porting code to be compatible with py3 and py2

Hey, folks!

I ported the code to work also for Python 3 (specifically, 3.3 and 3.4).

Summary of the changes:

* using absolute imports instead of relative
* adjusted tox.ini and .travis.yml to test also with py3
* adapted new_relativedelta overriding ``__init__`` instead of ``__new__``
* using dict.items and dict.values instead of dict.iteritems and dict.itervalues
* using ``next(some_iter)`` instead of ``some_iter.next()``
* protected code dependant on specific versions (ideally, this would go away)

I'm also commenting below some stuff I'm not sure if it's handled the best way.

@csalazar @Allactaga Any concerns?
For me both `six` dependency and `PY2`-like constants look fine. They look easy to drop here though.

Some of the checks can be "inverted" to remove a need for PY2 constants - e.g. instead of `isinstance(obj, unicode)` we can use `not isinstance(obj, bytes)`; it is not 100% the same, but in most case the difference doesn't matter. `bytes` is present both in Python 2.x and 3.x; in 2.x it is the same as `str`. 

I think all `PY2` constants can be dropped using this trick; to drop `PY3` constant we can just check for exception type, not for exception message.