Get tests passing

Apparently there have been a few changes regarding when messages are sent, which caused these tests to fail.  Here's a quick summary:

- issuing a `graph removeedge` request produces a `changeedge` response before the `removeedge` response
- issuing a `graph removenode` request produces a `changenode` response before the `removenode` response
- issuing a `graph clear` request produces a `graph clear` response
- in and out ports of the `core/Output` component are now optional

Are all of these changes expected?  I'm particularly curious about the `changeedge` and `changenode` responses, since the metadata of the edges/nodes in question does not seem to have changed, so I'm not sure why this response would be emitted.

It seems to me that the request / response cycle is an important part of the FBP Network Protocol, but many of these details are not documented in the [FBP Networking Protocol docs](http://noflojs.org/documentation/protocol). It would be great if the page was more clear about the context that each message is sent.  For example, the [component](http://noflojs.org/documentation/protocol/#component) message is described as "Transmit the metadata about a component instance", which sounds like a request, but is actually a response to a `component list` request.  Also, as pointed out above, the [graph clear](http://noflojs.org/documentation/protocol/#graph) message is now both a request and a response, but the docs don't explain this or how the message structure differs when used as a response vs request.

My end goal at improving these tests is to create a testsuite that any websocket runtime -- written in any language -- can use to ensure complete FBP Network Protocol compatibility (eventually it would be good to abstract the transport too, if possible).  I'm currently looking into the [protoflo](https://github.com/jonnor/protoflo) python runtime and having a testsuite like this will save me a lot of headaches while trying to ensure noflo-ui compatibility.  I'm not a javascript/coffeescript expert, but I've made some decent progress in making these tests more reusable, which I'll be posting soon.  Maybe you'll have some feedback on how to improve my changes.

One last thing: it would be awesome if this repo could be setup to run its tests automatically with TravisCI.

thanks!