Added step() API to record discrete steps in a test case. From test
case, step() is available as `this.step()`.

Example usage:

```
this.step('Login to Admin section');
// commands to execute login flow

this.step('Delete user foo');
// commands to delete user
```

Also:

 - added test timing information via test.startTime property.
 - ensure that testcase:end event always fires
 - ensure that testrun:end event always fires