Add more indirector documentation.

This adds:
 * general text about the indirector
 * the indirected class for each indirection
 * indirection-specific docs for a few indirections that I could manage to puzzle out
clarify what POST means
restore P:I:Indirection.initialize to its original signature
Be specific about our expectation

Previously, the spec test would sometimes fail because the File.unlink
expectation did not specify a path argument. As a result, if the code
under test unlinked an unrelated file, e.g. tempfile used to write file
content, then the would fail.
fix spec failures
(Maint) Use absolute path for puppet in Gemfile

This allows the use of binstubs to execute puppet from another working
directory.
Merge branch '2.7.x' into 3.1.x

* 2.7.x:
  (Maint) Use absolute path for puppet in Gemfile
Merge branch '3.1.x'

* 3.1.x:
  (Maint) Use absolute path for puppet in Gemfile
Merge pull request #1559 from djmitche/indirdocs

Add more indirector documentation.
(#4561) Support structured facts

Add the option stringify_facts which defaults to true. If it is turned
on the current behaviour with turning facts into strings is kept. If it
is false facts are kept in the format they were in which can also be
booleans, numerics, arrays and hashes.