add timeout ability to the rest of the interface
Right now the only Margo function with timeout capability is margo_forward(), for which there is a margo_forward_timed() variation that lets you specify a timeout.
This is just a proof of concept for how we would implement timeouts. It also serves as a test case for the HG cancellation capability, and it is likely enough to implement a fault detection protocol.
A complete implementation needs to refactor some of the timeout logic in margo.c and apply it to other routines that can block.