Add Python 3 and PyPy support