make service validation test be table-driven
add a 'protocol' field to api.Service
Refactor proxy code to make room for UDP
Implement UDP proxying in kube-proxy
Inject UDP timeout to enable testing
Move UDP backend setup to a function
Wrap goroutines in HandleCrash()