@bhollis metadata rewrite/refactor

This is my take on the metadata stuff. My next step is to merge over the work @tdreyno did on metadata too.

I haven't squashed or prettied up the commits, since it was a really messy process and it's tough to isolate things.

Notable changes:
* `add_metadata` is now the only way to get metadata into a Resource. Frontmatter data goes in the same place as all other data.
* Routing (the `page` method) is now just an extension with a sitemap manipulator.
* `page` can now set metadata via the `data` option, similar to `locals`.
* `raw_data` is gone.
* Because metadata is computed via sitemap manipulators, we no longer need caching shenanigans or endless looping over path matchers and such - I think this will be much faster.
* Resources can be ignored directly by calling `ignore!` on them.

There's still a lot of deprecation / removal / refactoring and new features to go in, but this is the base.