Relative posts should never fail to build, even if @dir or @name is nil

Fixes https://github.com/jekyll/jekyll/issues/1963
DRY up code, props @tamouse
First draft
Fix group_by_filter test by adding 2 items
Fix partial test
Upgrade gemspec
Make sort test run
Document site cleanup behaviour.

As per #2014, document the fact that the destination directory is
'cleaned up', such that "obsolete" files (files which do not have a
known input Page, Post or StaticFile) are deleted, when a site is
rebuilt.

Resolves #2014.
[ci skip]
Updated instructions for NearlyFreeSpeech
Clarifying wording of the destination directory warning.

At some point, it should also be clarified whether "folder" or
"directory" is the correct way to refer to that concept.
Create a LayoutReader class to read layouts
Refactor the LayoutReader class
Sort methods from most important to least important

This idea is based on the concept of a newspaper. The most important
things such as the headlines and the major details of the story at the
top. This translates to code in that the public API and the more
important private methods are at the top of the file. The more detailed
information (or methods, in the code) are further down, so that if
you've gotten all you need out of the code up to a certain point, you
don't need to keep reading anymore.
Move layout tests from site to its own file
Remove Site#read_layouts
Rename `with` to `within`

Thanks @parkr
Wrap the LayoutReader in the Jekyll module
Merge pull request #2020 from jekyll/refactor-layout-reading
Update history to reflect merge of #2020 [ci skip]
Merge pull request #2016 from Jashank/destination-warning