This makes it possible to switch to an alternative implementation if there are weird issues like #1568. Some users might also prefer the slightly better performance over more accurate hints.
See #1542
This renames tests/integration to tests/end2end and moves some files to tests/end2end/fixtures.