Fix memory leak caused by unnecesarily copied work
Check all results against all work instead of just taking the first match (avoids some rejected submissions to the pool, ASIC can produce multiple candidate results.)
Issue an ASIC restart during a work_restart, removes spurious timeout messages from ASICs and probably some rejected shares