added handling of timeout errors to GEMHwDevice

Retries the IPBus transaction in the case of one of the failures below:
"amount of data"
"INFO CODE = 0x4L"
"INFO CODE = 0x6L"
"timed out"
"ControlHub error code is: 4"

Maximum number of retries per transaction is set to 25 (probably too high, but to be safe)
Need to check that this retry always gets the information expected, i.e., if we fail to read a register that is updated regularly, will we get the expected packet?