Centralize site path sanitation

This pull request introduces new standardized methods for accessing a directory from within the site's source or destination. The new methods introduced (and used heavily) are:

1. `Site#in_source_dir`
2. `Site#in_dest_dir`

These methods utilize `Jekyll.sanitized_path` to ensure the given path is, indeed, inside the source or destination directories to prevent filesystem traversal. A major exploit of hosted Jekyll systems is filesystem traversal, which makes the entire filesystem accessible to a malicious user (something we wish to avoid). This pull request should make the path sanitization a bit clearer to ease the review process for security teams.

:heart: :lock: 

/cc @jekyll/security
Before, this method looked like this:

```ruby
def in_dest_dir(*paths)
  Jekyll.sanitized_path(dest, File.join(*paths))
end
```

In the case that `paths = %w{/Users/parker/jekyll/jekyll/test/dest ../../baddie.html}`, the `File.expand_path(File.join("/Users/parker/jekyll/jekyll/test/dest", "../../baddie.html"))` call will *not* have the proper `dest` base, so we tack it on inside `Jekyll.sanitized_path`. The new solution applies `Jekyll.sanitized_path` for each input path such that

```ruby
dest = "/Users/parker/jekyll/jekyll/test/dest"
Jekyll.sanitized_path(dest, "/Users/parker/jekyll/jekyll/test/dest") # => "/Users/parker/jekyll/jekyll/test/dest"
Jekyll.sanitized_path(_, "../../baddie.html") # => "/Users/parker/jekyll/jekyll/test/dest/baddie.html"
```

We need to apply `Jekyll.sanitized_path` to each path successively and pass the result as the base each time.