Updated UDP datastreams to be input, output or in/out similar to TCP

This looks like a big change but is mostly formatting: In the last patch I removed one level of "if" clause but did't dispose of the indentation.  This corrects that.

The functional change here is doing for UDP what my last patch did for TCP.  In options.cpp this means enabling the "receive input" checkbox so udp connections can now be input, output or input/output.  This means that where you really only want an output broadcast of your data you don't have to worry about interface priorities as you did when "output" implies input and output.

The change to datastream.cpp facilitates that. the existing code created separate send and receive  sockets.  That meant that there was little more to do than wrap the socket creation in a couple of ifs.

There are several pre-existing things this doesn't fix, notably validation of sensible output addresses in options.cpp.  I'll try and address that in a subsequent patch