Huge refactor: Use Silly file-system query engine.

Silly (https://github.com/ruhoh/silly) abstracts the core data-modeling logic used to model files and their metadata attributes (top metadata). It also implements the cascade. Finally it provides the query interface for finding all files relative to the cascade and also using constraints based on metadata.

Silly is now the engine that powers ruhoh but to get to this point, much of ruhoh had to be blown up. Now ruhoh's job is to provide a more opionated 'web-site' user interface. Namely user configuration files, data conversion (markdown) and templating langauges (mustache) and layout support. Additionally the web-based previewer, compiler, and asset-pipeline etc.

Sorry for the ultra massive commit but all of this was a proof-of-concept until finally it was working.
Pagination url is no longer customizable; remove test.
Paginator view is now a partial instead of a layout.
Add feature for parsing markdown in partials.
Add feature tests for custom data files + cascade.
Add support for ERB templates.

Note this is entirely enabled by Ruhoh::Views::Context which was implemented in the previous massive commit.
The context mixin acts as decoupled interface for the ruhoh templating environment, namely where collections can be automatically accessed via their name, e.g. 'essays.all.each { |a| a }'
Add support for HAML templates.
Allow page files to be served from natural root directory.

Replaces custom _root folder functionality with serving files from the 'real' root of the folder.

Note this change implies ignoring/excluding special files like config.json and Gemfile. The root currently models pages but it should also allow for static files e.g. robots.txt. Currently things are hard-coded in to allow this feature to work, but it should be refactored.
Only compile widgets that are used.