The MiningCoordinator has been split into common, and ethhash
specific funcationality.
This adversely affects the JSON RPC, in that all mining related
RPCs are now generic based on the type of miner being used.
This commit adds the clique specific implementation of the Miner
executor.
It is responsible for starting a clique mining operation when
requested. It also supplies the functionality to blend vanity data
with validator data etc. in the extra data field.
The EthHashMinerExecutor is comprised of both EthHash specific
functions as well as common functions which will be useful to other
consensus mechanisms.
As such the common functionality has been extracted to a parent class,
leaving ethhash specific functionality in the child.
Responsible for mining a block if the local node address
is a validator, and has not recently mined a block.
This has necessitated a slight rework of helper functions,
and shuffling of tests.
The EthHashBlockMiner contains both the generic mining capabilities
and the EthHash JSON specific API.
The generic capabilities have been extracted into a base class which
can be reused for Clique (or other) consensus mechanisms.