Extract cache interface

(Alternative to #165)

Refactoring to allow for alternative cache implementations. Includes implementations for the default noop (i.e. un-cached) behavior and a filesystem-based cache whose configuration is consistent with the existing `Mustache_Engine` constructor.

Includes updated and new tests.

Two changes of note:
1. Compiled template classes are now *always* `eval`'ed (rather than as an `include_once`)
2. Logging differs

To address the logging, `Mustache_Cache` could be implemented as an abstract class with `get/setLogger` and `log` implementations added to the interface. Not a fan of passing down the reference (hence why the logging was simply removed), but open to ideas.

As for the `eval`, curious on your thoughts / fears.