Extract cache into its class

Create an in memory cache class which will expunge the whole cache after
the ttl in one go.

Pass this cache into the skin method.

Use this cache for the shared template resolver and turn off the default
caching in that resolver.

This means that the main template and all component templates will
always remain in sync so that the main skin template can provide the
stylesheets for the components and they won't become out of sync with
each other.

Ideally in the future the cache can be further abstracted out to a
proper caching server.

Also reduce the cache time to 5 minutes so templates are updated faster.
Is it worth falling back to the default cache if `options[:cache]` isn't set? Otherwise we'll have to change every single application to pass in the new option.