zproxy_terminate will now time out and assert instead of infinite hang

In my initial zproxy_terminate implementation it was possible if "bad things" happened that the thread could hang waiting for the "TERMINATED" response.  I changed this to poll with a 1 second timeout and then receive the response on the pipe with a zstr_recv_nowait.  I'd rather the process blow up than infinitely hang on a problem with shutdown.  

I also cleaned up the zmq_device logic a little by switching to a case statement.