pn_driver_wait: return distinct error code in case of pn_driver_wakeup

Conflicts:

	proton-c/include/proton/error.h
	proton-c/src/driver.c
Enable (singlethreaded) use of messenger in an external
event loop that does other stuff, too.

pn_messenger_wakeup() allows other app threads to break the
  event loop thread out of pn_messenger_send and/or pn_messenger_recv

pn_messenger_set_idle_recv_wakeup() allows the event loop thread to
  call pn_messenger_recv while it's still idle. Useful for cases where
  the event loop has to run before messages are sent around

Conflicts:

	proton-c/include/proton/messenger.h
	proton-c/src/messenger.c
Improve managing of messenger credit in case of several peers

A new link that arrives after a few rounds of pn_messenger_recv(100)
did not get any credit, the messenger spent all the credit on the first link.

the current approach flows the least credited links first.
it stops when all links have some predefined minimum credit available.
thus leaving some credit for future links

Conflicts:

	proton-c/src/messenger.c