Add pure Python fallback module

Signed-off-by: Bas Westerbaan <bas@westerbaan.name>
setup: automatically fallback to pure Python module

Signed-off-by: Bas Westerbaan <bas@westerbaan.name>
fallback: use __pypy__.builders.StringBuilder when available

This increases performance *a lot* on PyPy.

Signed-off-by: Bas Westerbaan <bas@westerbaan.name>
setup: remove Python 2 only syntax
fallback: two fixes for raising ExtraData
fallback: performance: write(a+b) -> write(a); write(b)
fallback: do not use dynamic format strings for struct.(un)pack

Increases performance on PyPy.
fallback: bugfix in next()
fallback: add actual rollback and add a testcase for it

Signed-off-by: Bas Westerbaan <bas@westerbaan.name>
fallback: python3 bugfix for new testcase of d2f549a4

Signed-off-by: Bas Westerbaan <bas@westerbaan.name>
fallback: Use mmap objects instead of strings to unpack

Signed-off-by: Bas Westerbaan <bas@westerbaan.name>
Revert "fallback: Use mmap objects instead of strings to unpack"

See next commit.

This reverts commit 770fed6b7f1ce1f6e9c20881897a417680c8b79a.
fallback: _fb_read: add fast-path
pep8 friendly.
Use MSGPACK_PUREPYTHON envvar to test fallback module
fallback: Support Python 3.
Add purepython fallback. (Merge branch 'purepython')
changelog: describe purepython fallback.