feat(timeline): add timeline plugin

This plugin gathers test timeline information from the protractor test process,
the selenium client logs (if available), and sauce labs (if available), and
presents the output visually. This improves understanding of where latency
issues are in tests. See #674

Usage:

Add the plugin to your configuration file:

```js
exports.config = {
  plugins: [{
    path: 'node_modules/protractor/plugins/timelinePlugin.js',

    // Output json and html will go in this folder.
    outdir: 'timelines',

    // Optional - if sauceUser and sauceKey are specified, logs from
    // SauceLabs will also be parsed after test invocation.
      sauceUser: 'Jane',
      sauceKey: 'abcdefg'
    }],
  // other configuration settings
};
```
Is each thread going to get its own copy of this object?  I just don't know how `require()` works across threads.  Otherwise we could be exposing ourselves to race conditions here.