loop*: make timeout arg optional and default to -1

Do no require the timeout option for loop() and loop_forever().

Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
publish: make payload, qos and retained args optional

If payload is not specified, set it to NULL. This also enables support
for null messages.

The qos is 0 by default and retain is false.

Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
subscribe: make qos argument optional

Use 0 as default if not specified

Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
set_will: make payload, qos and retain args optional

Use NULL as default payload, 0 as default qos and false as default
retain.

This is similar to what we do with publish.

Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>