Basic setup.py
Add a basic cache for page information to avoid reparsing HTML

Previously every single run which loaded site-wide page structure
required each page to be reloaded. Now they're cached locally so a
simple template update doesn't need to trigger a full rescan simply
to do something like generate next/previous links.

Now Page has a from_cache classmethod which allows us to prepopulate
properties from the cache, avoiding the expense of parsing a page
just to e.g. get the creation date.