Unlimited layout embedding

This commit removes the two layout limit. Any number of non-repeating
layouts may be used and will be rendered in order (top down).

Unlike the previous layout rendering code, this version does not double
render the layouts. The previous version would render the sub-layout,
then render the master layout embedding (without re-rendering) the
sub-layout, and then re-render the combined layout with the page
content.
Add three layout test case.
Merge pull request #211 from Stebalien/recursive-layouts

Recursive layouts
Support JSON data-type in config, data, and page metadata.

Drop dependency on YAML and YAML gem since it causes lots of installation problems.
YAML should still be supported by ruby's native yaml lib as of 1.9+
Merge pull request #215 from ruhoh/json-support

Support JSON data-type in config, data, and page metadata.
Remove debug statements in Ruhoh::Parse
Remove debug statements from watch.rb.
Refactor base compile path logic & compilable module to be more DRY and reusable.
Don't choke on 'theme' check if them config not formatted correctly.
Ensure base_path is well-formed with leading and trailing slash.
Add 'compile_as_root' configuration setting.

Ensures site is compiled from the root path even when base_path is set.
Solves the problem when a webhost such as GitHub hosts your site from a sub-directory but the folder you upload your website contents to is treated as the website "root".

Example: http://plusjade.github.io/cool-project

URLS on this website should have base_path : "/cool-project/" but the web-site directory structure should NOT be contained in a "cool-project" directory.
Data.yml should be discoverable on every cascade level.
Allow collections to be discoverable from all cascade levels.

This is a bug fix since the spec implies the cascade will be traversed for collection discovery.
Bump v2.4
Release 2.4
Merge remote-tracking branch 'jade/master' into moon