Implement dynamic caching

This adds a new cache option of `'dynamic'` which is now the default for development.  It speeds compilation by caching the parsed versions of each file and only updating them when the last modified times have changed.

Unlike most methods for doing this, it does not use a watch on the files, instead it polls all the files whenever a request is made in order to check the files are up to date.  On my computer this takes about 10ms per request for a fairly large number of files, so seems to be acceptably quick.  For applications that include large files like jQuery it can provide a 4 times speed up once the files have been cached.

If nobody has any issues with this by 2013-07-04T18:00:00Z I will merge this and release as v1.14.0.  If someone else code reviews it and gives it the all clear, I will release it straight away.