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 
@thockin Go uses "defer x.Close()" instead of RAII. Yes, this forces you to write shorter functions. "Close" or "Unlock" that's not deferred generally means there's a bug. (Even if you always close, imagine a panic unwinding the call stack-- non-deferred Close/Unlocks won't happen.)