(maint) Move local egrammar makefile tasks to main Rakefile
(PUP-2994) Make validation of storeconfigs a runtime concern.
(maint) Refactor HTTPS verification tests into a shared examples

This commit refactors the spec tests that ensure puppet displays
meaningful error messages when SSL verification fails, e.g. when the
server certificate doesn't match the hostname we connected to.
(PUP-744) Expand scope of OpenSSL rescue block

The persistent http connection work introduced a regression,
preventing the agent from displaying useful error messages when SSL
verification fails, e.g. the server's SSL certificate doesn't match
the hostname the agent tried to connect to. The connection_spec test
didn't catch the issue, because those tests execute with the
non-caching pool, which always uses non-persistent connections.

The root cause is because the Connection class assumed http
connections are started by ruby in the `Net::HTTP#request`
method, so the OpenSSL rescue block wrapped that call.

However, in order to use persistent http connection, the caller needs
to explicitly start the connection prior to calling Net::HTTP#request,
which happens in the outer `Connection#with_connection` method.

This commit expands the scope of the rescue block. This way we receive
meaningful error messages if the connection is started explicitly for
persistent connections, or on-demand for non-persistent connections. It
also executes the ssl verification tests using persistent connections.

Also note that `with_connection` is private, so the fact that
`Pool#with_connection` or `Net::HTTP#request` can start the connection
is not visible to users of the Connection class.
Merge pull request #2954 from joshcooper/ticket/master/PUP-744-rescue-openssl

(PUP-744) Expand scope of OpenSSL rescue block
(PUP-2879) Add cryptdisks-udev to the services blacklist

Also this patch splits out the long line in upstart_spec.rb to be
one line per service, so more diff-friendly.
Merge pull request #2956 from kylog/issue/pup-2879/exclude-cryptdisks-udev

(PUP-2879) Add cryptdisks-udev to the services blacklist
Merge pull request #2953 from hlindberg/PUP-2994_validation-of-exported

(PUP-2994) Make validation of storeconfigs a runtime concern.
(PUP-3001) Revert future parser change removing dynamic scoped defaults

This reverts the change in PUP-867 by (again) calling the same 3x logic
for looking up defaults. The implementation of PUP-867 also added tests,
and one of those are now changed to reflect the changed behavior.
(docs) Clarify possible exit codes and behavior with negative exit codes on Windows
(PUP-2972) Remove += and -=

Previously the future parser supported += and -=. += was very similar to
the same operator that is in the current parser, but with a few
differences to make it consistent with the rest of the
language. The += operator no longer performed string concatenation and
instead acted like $a = $a + $b. The -= operator was added to complete
the set of operators available.

However, many people have been confused by these operators (even as they
exist in the current parser):

  * It looks like mutation, but the language does not have mutation
  * It looks like += from other languages, but doesn't behave like them
  * Shadowing a variable is something that needs to be explicit,
    otherwise it becomes confusing.

This removes += and -= from the future parser. They are still parsed,
but the validation step will issue errors if they are encountered.
Merge pull request #2957 from hlindberg/PUP-3001_revert-867-dynamic-scoped-defaults-removal

(PUP-3001) Revert future parser change removing dynamic scoped defaults
Merge pull request #2943 from jpartlow/maint/master/move-egrammar-make-to-rake

(maint) Move local egrammar makefile tasks to main Rakefile
(docs) Remove stale warning that Windows can't manage symlinks

Windows can manage symlinks, and we explain the limitations (extra permissions
needed, no-go on 2003) in the `ensure` attribute.
(PUP-2879) Add two nfsd-related upstart services to the blacklist
(PUP-2972) Improve error message for += and -=

The previous error message was very abrupt and didn't provide any kind
of guidance for the user. The new message for += and -= let's them know
that it is *no longer* supported and has a link to where they can get
more information.
Merge pull request #2958 from zaphod42/issue/master/pup-2972-remove-plussignment

(PUP-2972) Remove += and -=
Merge pull request #2959 from nfagerlund/docs_windows_symlink_straggler

(docs) Remove stale warning that Windows can't manage symlinks
Merge pull request #2960 from kylog/issue/pup-2879/add-more-services-to-blacklist

(PUP-2879) Add two nfsd-related upstart services to the blacklist
Merge pull request #2879 from nfagerlund/docs_exec_exitcodes_windows

(docs) Clarify possible exit codes and behavior with negative exit codes on Windows