InteractionMachine.api_request should throw an error for api failures

Currently, we just return the api response. Instead of throwing errors for these kinds of things in different parts of the interaction machine (for eg, `ContactStore` for contacts not found), it would be nicer if these errors were thrown in `im_request`, so everything else can just do a `im.api_request(...).catch()` if they need their own handling.