[2.2] Resolve two race conditions relating to HA lock sessions

- Add a check ensuring a slave commit has a running lock session when committing,
  or has explicitly opted out from having one.
- Move lock session management into its own class, where timeouts and concurrent
  access can be tested in isolation.
I think we have a similar thing: `org.neo4j.function.Factory`, may be reuse it?