lnwallet: introduce the sigPool struct to optimize state creation+verification
lnwallet: introduce the sigPool struct to optimize state creation+verification

This commit introduce a new struct which acts as a companion struct to
the channel state machine struct. With the new commitment state
machine, we require a signature to be signed and validated for each
outstanding non-trimmed HTLC within the commitment state. As it’s
possible to have hundreds of HTLC’s on a given commitment transaction,
rather than perform all ECDSA operations in serial, we instead aim to
parallelize the computation with a worker pool of sign+verify workers.

The two primary methods of the sigPool are SubmitVerifyBatch and
SubmitSignBatch which allow a caller to trigger an asynchronous job
execution when creating or validating a new commitment state.

ddustin/lnd,aakselrod/lnd,LightningNetwork/lnd,aakselrod/lnd,AndrewSamokhvalov/lnd,AndrewSamokhvalov/lnd,ddustin/lnd,LightningNetwork/lnd