Fix a possible race between udp dispatch and socket code
There's a small possibility of race between udp dispatcher and socket code - socket code can still hold internal reference to a socket while dispatcher calls isc_socket_open, which can cause an assertion failure. Fix it by removing the assertion, and instead simply locking the socket in isc_socket_open.
Closes #943
Edited by Evan Hunt