Ok so little update. I started doing this in a plugin and had it all working. However, I decided to refactor it into the Pages object in a pretty generic way to allow for the addition of facebook, opengraph, twitter, and even standard metatags to be set in site.yaml and also from page. Page of course overrides any defaults set in in the site configuration.
What this means is that you can manually set any of these metatags from the Page which is very useful. I can still see the need for a metadata plugin however. This plugin could automatically set things dynamically without the need to manually add them. I also moved the metadata HTML generation into a partial so this means you can override the output via twig too.
I think this is the most flexible system. Basically the functionality is there now to extend these tags even more and add completely custom ones if you need them, while still providing the core functionality in Grav.
This will be part of the immanent 0.9.2 release.