Normally some time passes before the first block is created in an
epoch, but before initial block there may be no network operating (see
commit 192ff0664f8507a0bce8c in Tendermint), so we don’t count this
time as an element of an epoch.

This is a big change that comes from the fact that time between blocks
is not enforced by consensus in Tendermint. Besides making data
structures more natural and the usage simpler, it allows to abandon
creating blocks every n seconds regardless of whether there are
transactions present or not. For this to be possible, Tendermint needs
to stop creating blocks when the application hash changes. See
https://github.com/tendermint/tendermint/issues/1909 for details.
A testnet generator is introduced to faciliate generating of initial
data, which is now highly dependent on time.
A module which encompasses epoch-specific logic has been created.

The main purpose of taking lock time into account when drawing
validators is to choose validators that prefer long time appreciation
of currency value over short time fee profits. Three years seem
sufficient for this purpose.

This change means that compromising validator’s key won’t necessarily
mean loss of funds. While it results in a lower incentive to protect
validators’ keys, it also results in a lower incentive to crack
validators (as there will be little funds to steal). Locked accounts
will still have an incentive to make validators secure, as compromised
validators can lower the currency value.
This change also means that stakeholders will be able to easily
delegate the duty of running a validator to other entity. This opens a
possibility of validators being backed by multiple stakeholders.
A possible next step is lowering the entropy of validators’ drawing.

This is required to allow block proposers to include valid sequences
of transactions.
CheckTx is now handled both when commiting and when gossiping, as
responses to all CheckTxs need to be delivered for the client to issue
a Commit request.
Callback mode of ercoin_abci has been changed to faciliate the above
changes.