[UPDATED] Refactor sessions to not be singleton

The zope.testing.cleanup functionality does not work for our use case:
when using functional and integration testing with the same layer the
cleanup is ran once after executing both, which might result in
auto_commit enabled for the integration testing layer.

The BUILDER_AUTO_COMMIT layer resets the session after each test, which
fixes the problem. But it the session is not reset when not using the
BUILDER_AUTO_COMMIT.

(I'm working on the readme on a seperate branch, I'll document it there until it is in master too).
/cc @senny @phgross