jade prototype: async rendering with yielding locals

Hello,

I am currently looking at koa to see what new things we can do with generators and ran into the idea that maybe the jade rendering phase could be done asynchronously.

Surprisingly with a very small footprint PR, jade rendering can become async :-)

This could be useful in some scenarios when you want to start streaming content to a user even though all the data has not yet been fetched. If you put promises inside locals {}, jade will start rendering and sending the output while the promises are resolved.

I hope you will find it useful & would be thrilled if it could make it upstream in this form of another :-)

I wrote the PR so that it does not break the existing jade. It should keep working just as before except for the new harmony: true compiler option.

to invoke the compiler with generators enabled, you have to add in the options :

    harmony: true

calling

    mocha -R spec

does the usual tests without generators (165 tests green).

calling

    mocha --harmony -R spec

activates generators rendering (harmony: true option) on the 'cases' and the new 'gn-cases'  (172 tests green) 

Examples of things that can be done :

```
h1= yield (title)

ul
  - var dirs = yield readdir('test/gn-cases/auxiliary')
  for file in dirs
    - var stats = yield stat('test/gn-cases/auxiliary/' + file)
    if stats.isFile()
      li= file + " is a file"
    if stats.isDirectory()
      li= file + " is a directory"


mixin test_mixin(prefix)
  span= prefix + (yield (title))

div
  +test_mixin('this is ')

mixin test_mixin_block()
  div
   block

+test_mixin_block()
  span= "please read " + (yield (title))
```

At this stage, the API is

    fn = compile(src, options) // as usual
    fn(locals, pushable) // where pushable has a .push function

Maybe the API should be

    fn = compile(src, options) // as usual
    readable = fn(locals) // a readable stream
    readable.pipe(writable);

or

    fn = compile(src, options) // as usual
    fn(locals, writable)

Is this something that could find its place in the jade project ? Any feedback welcome !