Simplified zproxy

- classic complexity-oriented design! API was trying to provide a socket
  abstraction, except it wasn't an abstraction. The use of methods like
  "set frontend identity" that literally set the frontend identity,
  except via a long and complex wrapper, are a red flag. The abstraction
  should simplify, not complicate. The old API was clearly going to lead
  to endless growth (set frontend HWM, set frontend read timeout...).

- version detection was complex. I added detection for zmq_proxy_steerable
  via configure.ac.

- removed support for pre-V4 versions of libzmq, since the old zmq_proxy
  function needs no async wrapping. If zmq_proxy_steerable isn't present
  the constructor returns NULL.

- capture is moved out of the constructor since it's a minority use case.