Move all hardcoded folder names into config vars

Everything is now set within extensions/config.php.
Prevent _shared.yml being loaded multiple times
Use Config paths for including Twig extensions
Correct $root_path setting inside resize_path
Maintain image ratio by default when resizing
Fix some errors with merging page & asset data
Allow content to be passed directly into Page
Get custom 404 pages working again
Don't run preg_replace on non-string values
Prevent empty index errors on file listing
Missing Config::
Added missing Config::$root_folder settings
Fix links to public/404.html
Update public/docs/css/screen.css

re: #image-holder: enter max-width for chrome 21
Merge pull request #64 from silentpost/master

re: #image-holder: changed max-width for chrome 21 bug
Correct errors retrieving some nested pages
Look for a template type matching the route first*

* This means you can have alternate .json templates. template.json will be used for json requests and template.html will be used for regular requests.
Fixes incorrect siblings_and_self collections
Empty array fallback for YAML
Escape inner double quotes when cleaning JSON