Rewrite with Promises

**Getting this package *finally* ready for v1.0, I've decided to rewrite it using Promises instead of using callbacks and the `async` lib.** This reduce both the SLOC and complexity of this code, while also creating an easier to use API that's more composable with other async tasks.

### Changes

* Upgrade all dependencies.
* Rewrite to use Promises for async.
* Reduce complexity of cache code.
* Update examples to each have a `package.json`.
* Update `render(file, context, options)` API to better align with Handlebars.
* Switch to `graceful-fs` to support large #s of files to avoid `EMFILE` errors.

### Public API Changes

The refactoring changes above have lead to some pre-v1.0 API breakage, both in terms of method names and return values. **I'm favoring a clean, breaking removal over deprecating APIs; please comment if you feel sternly otherwise.**

* `loadPartials()` --> `getPartials()`, returns a Promise.
* `loadTemplate()` --> `getTemplate()`, returns a Promise.
* `loadTemplates()` --> `getTemplates()`, returns a Promise.
* `render()` now returns a Promise.

### New Features

* Promises!
* Better perf. (Promises are showing to be faster than `async`).
* Support for Handlebars' `data` channel, via `options.data`.
* `compileTemplate()` hook for pre/post compile process, supports Promises.
* `_renderTemplate()` hook, supports Promises.

### v1.0 Todos

* [v1.0 Milestone](https://github.com/ericf/express3-handlebars/milestones/v1.0.0)