if the manifests are arrays, we can speed things up by indexing separately and
depend upon the order of the dictionary.
feat(manifest): add indexer
to speed things, up we're now indexing manifest items
feat(manifest): add publishing order optimizer
since we shouldn't be trusting the order of the provided pages manifest, we've
implemented sorting, so that the ancestry of pages is reflected in the order of
publishing.