Introducing page assets.

Page assets provide a more structured way for plugins to add resources to a page (css, javascript etc). Sure, a plugin could in this instance extend shell/head or shell/footer, but imagine this situation:

Plugin A requires a specific javascript library "Awesome.js", and bundles it with it. Plugin B also requires "Awesome.js" and bundles it. If they extended footer, Awesome.js would be loaded twice. Using page assets they'd both have a setAsset call, passing a name of "Awesome.js", so that the asset is only loaded the once.

TODO: Move core assets to this architecture