Javascript agent

A JavaScript Agent, based on the original work of @umarsheikh in #161, and meeting the requirements of #130.

# Agent description:

This Agent allows you to write code in JavaScript that can create and receive events.  If other Agents aren't meeting your needs, try this one!

At the moment, all code should be written in the `code` option.  In the future, a full editor will be provided.

You can implement `Agent.check` and `Agent.receive` as you see fit.  The following methods will be available on Agent in the JavaScript environment:

* `this.createEvent(payload)`
* `this.incomingEvents()`
* `this.memory()`
* `this.memory(key)`
* `this.memory(keyToSet, valueToSet)`
* `this.options()`
* `this.options(key)`
* `this.log(message)`
* `this.error(message)`