Proxy udp

Enable UDP support in kube-proxy.  There are a number of follow-on efforts that could be undertaken, for which I will file issues.

I suggest reviewing this commit-by-commit, since I tried to group things into logical steps.

I tested this through unit tests and also by installing a UDP service and demonstrating that the proxy works.  This is a place where an e2e test would be nice, but I thought it was useful to get this in and move forward.

Fixes #1205 
First, this triggered me to look at FDs and find a bug.  If Go had RAII I would not have written this bug (forgot to Close).

In this scenario it does look like you get the same 5-tuple.  I don't know enough networking to say whether the backend can tell the difference at all - that a client disconnected and another one used the same srcport.

If the backend can tell the difference, it will have terminated the logical connection, no?

If the backend can't tell the difference, then what exactly am I supposed to do?

I don't grok what filtering you mean.  If I receive a UDP packet into the proxy port, I'm going to proxy it.  If I receive a packet from the backend, how do I know if it is legit or not?