Add caching API.

The caching API enables data to be fetched asynchronously. It also has
a dual locking scheme in place: keys can be locked for a specific
amount of time, and only one process can update the key at a time.

This augments the Impromptu process by splitting it into two
phases. The first generates your prompt using cached values. The
second is run in the background and asynchronously updates any cached
values. They use the same API; the magic occurs behind the scenes.
Merge pull request #13 from Impromptu/caching-api

Add caching API.
Pass the impromptu instance to the prompt class.
Make the cache method signature consistent.

Methods that the cache returns should accept a single callback, which
has the signature of `error, results`.
Pass the impromptu instance to the DB class.
Provide the prompt file with the Impromptu instance as context.
Convert the module registry into a class.
Merge pull request #15 from Impromptu/module-class

Begin to standardize classes; convert the module registry into a class.
Use the correct path to impromptu-background.
Merge pull request #16 from Impromptu/fix-bin

Use the correct path to impromptu-background.
Unreference the impromptu-background process.

Marking impromptu-background as `detached` is not enough, we also have
to inform the parent process to remove it from its references.
Merge pull request #17 from Impromptu/unref

Unreference the impromptu-background process.
Try to read prompt as JS whenever possible

Compile CS to JS and cache it if your prompt uses CS

This saves about 50 ms
Conditionally load CoffeeScript

This saves about 50 ms
Extract helpers
Get rid of COMPILED_DIR variable

Makes prompts easier to test
Update tests to use their own compiled prompt location
Merge pull request #14 from Impromptu/improve-coffeescript-performance

Improve coffeescript performance

Cuts ~100ms out of prompt generation
Pass the impromptu instance to modules.
Merge pull request #19 from Impromptu/add-impromptu-to-module

Pass the impromptu instance to modules.