Initial convert to being a Transform stream

This doesn't actually change over to emitting a stream, but it puts in
place what is needed.
Put new object stream API in place.

For now, it is alongside the old API so that I can update the tests and
examples in a separate commit.
Convert one test to object stream style.
Update test for variable bindings.

Also, pull the t.plan(1) call out of resultEquals; it turns out that
wasn't a good idea since it limits reusability.
Update tests to streaming.

Also, change the objects emitted for include and subninja to have a
field "path" instead of "file".
Note that API is transitional.
Purge event emission.

This breaks the examples. I will update them once the API has settled.
Up next I am going to add logic to the parser to glue bindings to their
respective heads, which will simplify the API. I can't envision a use
case where the bindings would be interesting independently of what they
are attached to.
Glue bindings to their respective declarations.

Next I need to do some cleanup, like rename 'buildHead' to 'build',
since the concept of "head" is gone.
Remove concept of "head".

I was using "head" to refer to the beginning of declarations that might
have bindings. Since we are now directly attaching the bindings to those
declarations, it doesn't make sense to expose (or even mention) this
low-level concept.
Merge parsing of `rule` and `pool` heads.
Return after successfully parsing a line.

This avoids pointlessly checking all the other cases (also, I shudder at
the though of there being cases where the "leftovers" in `chunk` could
cause anomalous behavior).
Update identity.js to the new API.
Update examples to the new API and update README a bit
Performance has improved.

It appears the new object stream API is faster, at least for this simple
benchmark.