core: introduce msg_try_send

msg_send takes a block parameter. msg_receive has a msg_try_receive variant.

This PR removes the extra 'block' parameter from msg_send and adds msg_try_receive.

Additionally all occurences of msg_send are converted respectively.

(previously pull-requested as part of core IPC changes, but unrelated to those)
If this would be a C condition I would argue for parens. Took me couple of moments until I understood that it is `if a AND (b or c)` and not `if a and b or c`