Add support for work to be triggered via an event

Still some discussion to be had here, but these changes support Robots styled like this:

```javascript
var Cylon = require('./');

var robot = new Cylon.Robot({
  name: 'test',

  connection: { name: 'loopback', adaptor: 'loopback' },

  device: { name: 'ping', driver: 'ping' },
});

robot.on('work', function(my) {
  every((1).seconds(), function() {
    console.log("Hello, human!")
    console.log(my.ping.ping());
  });

  after((5).seconds(), function() {
    console.log("I've been at your command for 5 seconds now.")
  });
});

robot.start();
```