Split out the test listener so it can be shared

Bit of tidying and refactoring. Moved experiments and server in to their own packages, and pulled out the code in cmdline.go that was doing the running statistics into its own class (experiment.go). Hopefully this means we can share experiment.go between server and cmd line and get the web UI to be able to provide live results just like the command line does. This also should make it easy to save continuous samples during a test when we get to that feature.