Add ability to login and push using REST api

also simplified some of the benchmarking so we have one channel
with Iterations, Steps and Errors rather than trying to manage
three separate channels. Also moved the handling of multiple steps
in to the worker (this makes more sense because the worker, which might
be on a remote machine, is what is actually responsible for running an experiment).