Use absolute paths in CLI

  * Use absolute paths for source files and target paths
  * Memorize and explicitly check for watched directories
  * Make path comparison and construction more precise and clear
  * Remove now unnecessary check for special relative paths
Remove `path.exists*` as fallback for `fs.exists*`
Simplify `removeSource` and make it synchronous
Make timeout callback in `watchDir` synchronous
Simplify and rename `unwatchDir` (to `removeSourceDir`)
Fix and simplify management of `sources` in CLI

  * Move all source path filtering to `compilePath`
  * Restrict modification of `sources` to
    * `compilePath` for adding
    * `removeSource` for removing
  * Don't add unfiltered paths to `sources` (and remove them later on)
Merge pull request #3255 from marchaefner/CLI

CLI fixes and refactoring
Escape newlines in heredocs with backslashes
Merge pull request #3256 from xixixao/issue3249

 Implements #3249, #1994 Escape newlines in heredocs with backslashes
Fixes #3259 -- Use placeholders when adding params to scope

Don't register nested variables of complex parameters as parameters of the compiled function. Use the computed placeholder name instead.
Handle backslashes at the end of heredocs
Add negative slice end index into docs
Merge pull request #3262 from xixixao/issue1766

Fix #1766, Add negative slice end index into docs
Implemented method call chaining
Handle nested calls and function oneliners when chaining
Added compilation regression test
Fixed leading whitespace before interpolation in simple strings
Fix #3264, missing leading whitespace before interpolation in heredoc
Merge pull request #3263 from xixixao/issue1495

Implement #1495,  Method call chaining
Merge pull request #3261 from xixixao/issue1273

Fix #1273, Handle backslashes at the end of heredocs