Adjust MAX_FILE_SIZE during test on 32 bit systems

The default MAX_FILE_SIZE of (5 * 2 ** 30 + 2) exceeds the
capacity of an int on 32 bit systems; adjust this default
down to (2 ** 30 + 2) if the default exceeds the maxsize of
an int on the platform running the tests.

Closes-Bug: #1378810

Change-Id: Iafa2ce90ceb2de4e968ad48580270c8c572a9c9c
Rework `splice` and `tee`

This patch reworks the bindings to `splice` and `tee` in order to fix a
(potential) bug when using the old `splice` binding and passing offsets
(see https://review.openstack.org/#/c/135319/ for a discussion of the
issue).

The new binding code (based on https://github.com/NicolasT/tee-n-splice)
uses more `ctypes` features w.r.t. parameter and return value handling.

It also introduces a test suite for both calls.

Change-Id: Ib8084ca20fe7a199a00067da9386c2ccf618755c
Splice: Use `operator.or_` instead of a lambda-expression

Suggested by Samuel Merritt in https://review.openstack.org/#/c/135319/

Change-Id: I5b86f25b42ffa6d4f9626dc6eb207ae0425933a8
Merge "Rework `splice` and `tee`"
Merge "Adjust MAX_FILE_SIZE during test on 32 bit systems"
Merge "Splice: Use `operator.or_` instead of a lambda-expression"