Checkpoint: made hapi support asynchronous template engines

This required restructuring view Manager.render() and _get() to return
their results asynchronously.

Added two new flags to the views section of server options:
asyncCompile -- set to true if the template engine compiles
asynchronously
asyncRender -- set to true if the template engine renders asynchronously

Remaining work:
- test the with-layout case
- test an async engine other than blade
- verify that synchronous template engines still work as desired
- write new automated tests
- make sure the changes look like everything else in the project

The provided tests fail with a zlib assertion failure, but that test
fails in the master branch as well. Not sure if this causes testing to
abort with some tests un-run.
The sync rendering unit tests now pass.

Updated all the unit tests to get their results from render() in a
callback instead of as a return value. I believe this is an
implementation detail that shouldn't end up exposed to the application
level, but I don't know the code base well enough to be sure yet.

To excute just the template/view system tests, run:
mocha -R spec test/unit/views.js

Fixed bugs exposed in renderSync() by the unit tests.

Added blade to the dev dependencies.
Made layouts work with different template engines.

Added three unit tests for async template engines: valid, invalid, and
valid with layout. Fixed the bugs revealed in my dry-coded layout
rendering.

To make blade layouts work, added a new option to the "views" options
section. Set `layoutFile` to the name of the layout file you wish to
use, with suffix appropriate for your layout engine. The default is
"layout.html", so existing hapi layout code continues to work.

This isn't generalized enough, since you'll want to be able to override
layouts on the fly for some pages, but it's a start.
Should test for the asyncRender option when decided how to render,
not the asyncCompile option.
Unnecessary semicolon. Obviously both threat & menace.
Refactor the synchronous render method, for great justice.
A similar refactoring for renderAsync(). Must now find a way to
extract the common logic.
Whitespace changes to kick off a travis build, since running the tests
locally results in a node zlib assertion failure every time. O.o
Bah. Missed some places to call back instead of returning a value.
98% test coverage now.

2 more error cases and one odd template loading branch to test.
(Rolling back to node 0.8.18 fixed the crashes on running the tests.)
Refactor render() to fail when given a non-string filename

And write a test to prove it. I'm pretty sure the existing code base
just fails in this situation.

100% test coverage now. Whoop.