Master generates and propagates an epoch

that slaves must use for all further communication with it, or fail with
InvalidEpochException. This is to prevent the scenario where one part of a
transaction or commit communicates with one master, there's a master
switch where the new master instance uses the same host and port as the old one.
If a transaction would continue through such a scenario then unexpected
things and bad things might happen.
Removes synchronized block around commit

that was introduced by 9b7384ad2f69d9c3a768fe59480a44230214cb81.
Since then these committs: a88607cbe23d8146d8540d62061276866d2b1d02,
a7324374f135205a7c0eee5cde8ae58eb137f3e5 have addressed the underlying
issue so that the synchronization is no longer needed.