Work on 0.2.12pre.
lib/cli exports CLI class, expose hooks for UI.

The CLI class accepts functions and streams in its constructor
for the implementation to define their own interfaces.

We are doing this so that we can unit test the CLI with
mock handlers and streams.
--hub option accepts urls and Booleans. Fix #96.

A bug in nopt incorrectly coerces values to Booleans
when a type array that contains the Boolean type is
used, even if other types are higher priority than
Boolean.

Workaround by making a second nopt pass.

Add a new test for the CLI to cover the bug.
Add basic CLI tests. Ref #95.

Test the CLI given these conditions:

 - Creating a hub.
 - Creating a hub with files.
 - Without arguments.

Caveats: Requires ports 9010 & 9011 to be available.

MockWritableStream was not being used anywhere.
It has been modified to export the constructor
instead of a Vows topic function.
Switch from phantom to node-phantom. Fix #97.

Includes these commits:

 - Use node-phantom APIs. onLoadStarted is broken.
 - Fix onLoadStarted by using on* events, not set.
 - Add teardowns, kill phantomjs as we complete.
Wait for brower & Yeti to end, then cb. Fix #98.

The "session end event fired once" test sometimes fails.
It recently failed in CI and it's happening because
sometimes Phantom completes faster than Yeti, especially
since we switched to a lighter Phantom in ref #97.

Wait for both to complete before making assertions.
CLI stdin/out/err streams; evented mocks. Ref #95.

The CLI now expects to be provided with streams for:

 - stdin
 - stdout
 - stderr

This replaces the old options:

 - readableStream
 - writableStream
 - putsFn
 - errorFn

Removing putsFn and errorFn discourages usage of Node.js
stdio (e.g., console.*), which is one less thing to mock.
The CLI.prototype's puts() and error() methods still allow
for `printf`-like formatting by using util.format().

Create new mock Readable and Writable Streams for testing.

The MockWritableStream supports expect(), which will fire
a callback when the expected string is provided. This lets
us do async testing of the CLI.
New phantomContext() API for generic Phantom use.

Ref #95. This API will make sure all uses of Phantom
will properly check for errors and have teardowns.

We will soon use this in test/cli.js.
First test of the CLI with a browser. Ref #95.

The CLI test uses hub.phantomContext() to create a browser.

Other changes:

 - Mock streams set isTTY = false to prevent weird handling.

 - Because mock streams are not a TTY, writing keys to them
   using readline.write(null, keyObject) triggers a Node.js crash.
   Wrap the Ctrl+U write in lib/cli with a check to see if the
   readline object is hooked into a terminal.

 - Add pause() and resume() noop methods to mock streams.
   This lets them work in readline.

 - Change a couple process.exit() calls to use self.exit()
   in lib/cli.
Add test for failing command-line UI. Ref #95.

Add YETI_MOCK_DEBUG for debugging the MockWritableStream.
When set, MockWritableStream#expect prints out what it's
expecting and collecting.

This is useful for creating new tests.
Request event fixed-length args. Fix #100.

- Change Blizzard `request.*` event handlers to be 2-arity.
  The remote argument list as an array is the first argument.
  The reply function is the second argument.

- Update Yeti usage of these events to use the new signature.

- Use the request argument list for incomingBridge events
  as their actual arguments, but without a reply function.

`request.*` events for Blizzard handle remote RPC requests.
Sometimes the event will reply to the caller's side using
a reply function provided as the last argument.

A malformed RPC request with too many or too few arguments
caused the event handler to expect the reply function in
the wrong place in the argument list, yielding a crash.

To maintain compatibility with the majority of Yeti events
which use the incomingBridge API to bridge an EventEmitter event
to a Blizzard `request` event handler, the remote argument list
(first argument) is unpacked and the bridged event is fired
with that argument list. The reply function is not included.

The incomingBridge API is only intended for make a remote event
appear local -- not to handle RPC-specific behavior like a reply.
Yeti already follows this rule, so no further changes are needed.
Explicitly unset session data on Blizzard end().
Properly serialize Error message in RPC response.
Print results from FeedbackLineReporter. Ref #11.

Move rendering of test results away from lib/cli.js
into a FeedbackLineReporter in lib/reporter/feedback-line.js.

The idea is to create a other reporters, e.g. JUnitReporter,
with the same interface.
Introduce JUnit output option. Fix #11.

 - Introduce JUnitReporter.
 - Introduce `--junit` and `--output junit` CLI options.
Add documentation for JUnit option. Ref #11.
Version 0.2.12.
Work on 0.2.13pre.
Fix _socketWrite crash after end(). Fix #102.

Make sure `this.output` is not falsey before writing.
Calling a requestCompleter after end() will cause a
_socketWrite, but this late data should not be buffered.

See https://travis-ci.org/#!/yui/yeti/jobs/2767639/L563
YUI based browser test driver. Fix #91.

 - Basic re-implementation of inject.js. Code for detecting
   and collecting test results is separate from code for
   communicating with the Yeti Hub.

 - Status overlay UI not implemented.

 - Upgrade deps to YUI 3.7.3.

 - Increase timeout test's timeout from 1 to 3 seconds.
   1 second is no longer long enough.

 - Add `--debug` option for npm install, which will cause
   postinstall to download debug versions of YUI files for
   verbose console logging during npm test when TRAVIS=1.