Support PyPy3

Tests all pass. However, you might want to reject this PR if you think it's too early to support it.