Refactor URL processing/generation into separate module

This is done to prepare for improved permalink generation
for URLs containing special characters, as proposed in
issue #782
do not force the permalink to be a dir if it ends on .html

Fixes #798.
test per-post permalinks

Add tests for setting a permalink on a post (in YAML frontmatter),
both the "old way" (generating an index.html) and with an .html ex-
tension.
Merge branch 'master' into permalink-special-characters

Conflicts:
	lib/jekyll/page.rb
	lib/jekyll/post.rb
simplify some code with Hash#fetch
move path handling in pages to the `path` method, as in posts
With the move of path handling, Page#to_liquid can be simplified
simplify coderay option handling
simplify Site#initialize
Support missing kramdown coderay option
Posts: move slug to title in a separate method
Move #to_liquid to Convertible
remove no-longer needed LSI accessor

LSI has been moved to another class (Jekyll::RelatedPosts),
but this was left in Post.
refactor Include tag file validation

Split validation into a separate method, and give a more
descriptive error on symlinks.
coding style preferences (@parkr)
Post + Page: extract real path retrieval into separate method (@parkr)
Merge branch 'master' of https://github.com/mojombo/jekyll into permalink-special-characters
Move URL generation to own class instead of a module

As suggested by @parkr in #944
Convertible#to_liquid: allow an alternate attribute set to be passed
Merge branch 'master' into minor-refactors