Proper shutdown

This PR introduces a proper shutdown procedure for Neo4j, both in embedded and HA modes. It basically allows current transactions to finish while denying new ones. The mechanism for this is an AvailabilityGuard, which different subsystems use to grant or deny access to the database, and which is checked on each transaction start.