Merge new test code.

OK I should start by saying that I took out your pretty separation of pieces of code and made it into a monstrosity. That being said: 

- removed TestController
- removed Server
- removed Stats
- Kept client (unchanged)
- Added EndPoint
- Added Timeouts (when Push server accepts PUT, but never sends back an update)

For the EndPoint, it really only emits one event now: `results`. We look at the `status` of results and then update stats accordingly. 

Some cosmetic / wording changes to match the SimplePush protocol better. We say "update" instead of "ping" since the protocol actually has a Ping but we're not using it. 

Also I removed duplicate detection. This seems to be a behavior of the protocol that the server can push a notification with multiple version numbers in it. 

The only thing I haven't rewired up is the connection lifetime stats. I'll get on that tomorrow.