Clean up usage of Rx and add support for retrying HTTP 503

This was done for UDP only to introduce the concept of @Rule.  The same can be applied to all test servers.
Not much of hit when using concatMap instead of flatMap.  Throwing exceptions in the map() handler doesn't work well because you end up having to wrap it in a RuntimeException.  Doing concatMap or flatMap type operations give you far greater control over error handling since the real exception is used.