Description
Some of our signing methods can return a result, but our handling of those is somewhat inconsistent. In some cases we just "handle" the errors by panicing.
There's two places we need to figure out handling - in the channelmonitor enforcing on-chain and in the channel handling off-chain updates.
In the ChannelMonitor, previously we couldn't really do much because we only lazily rebroadcasted and expected user broadcaster implementations to rebroadcast, but now we rebroadcast aggressively and we can realistically handle this somewhat better, actually failing to sign and letting the user call rebroadcast again when they're ready.
On the channel end we similarly previously couldn't do much, but the actual signing of new states is now done async after handling monitor updates and the messages themselves, so I think its possible we could do something similar. Of course we'll have to tell users the absolutely cannot try to return errors on a routing node cause things will just hang, but for an end-user node its okay.