custom cache root engine option

This adds support for specifying a custom cache root.  By default
the engine caches template files alongside the source files (the
cache root is the same as the source root).  Specify custom cache
root to store cache templates in another root dir.

Note, I had to add the step of creating the cache files dir if it
didn't exists.  Erubis doesn't do this automatically :(.  Not sure
is there will be a performance impact on this but will look out for
it.