(Maint) Clarify which branches changes should be based on

Priror to this commit, CONTRIBUTING.md did not reflect our current
process in regards to where changes should be targeted. Now it is
clear on these issues so that it will be easier for community
members to target their submissions to the right location, and
prevent us from frequently having to kick back pull requests that
need to be rebased and retargeted.

<hailee@puppetlabs.com>
(Maint) Clarify that Redmine tickets are mandatory

Prior to this commit, it was unclear if it was required to have
a Redmine ticket before submitting a pull request. Now it is clear
that this is a requirement in order to help us keep track of
submissions.

Also add details about looking for already existing tickets that
are either duplicates or related. This should help with the issue
of having tons of tickets all related to one bigger issue which
cannot be tracked easily.

<hailee@puppetlabs.com>
(Maint) Be more honest about submission methods

While CONTRIBUTING.md makes it clear that GitHub is the best method
for submitting changes, it's important that we be honest about the
fact that Redmine and email patches have a tendency to get lost
(sometimes forever). Hopefuly this change will encourage people
even more to use GitHub as apposed to other methods of contributing.

<hailee@puppetlabs.com>
(Maint) Remove some more ambiguity

Remove the pieces of the document that say we support email and
Redmine patches, instead of just saying that we strongly
discourage these. Also change the places where we say "we recommend"
when what we really mean is "we require". Lastly, make a few small
changes that were brought up on the PR.

<hailee@puppetlabs.com>
Update CONTRIBUTING.md
(#15595) Offer better errors for certificate validation errors

The verify_callback callback gets an OpenSSL::SSL::SSLContext for each
certificate in the chain that's verified.  If the verification failed,
then SSL provides a nice error to the callback, but that error doesn't
appear in the subsequent OpenSSL::SSL::SSLError.

This patch uses a technique similar to that used for peer_certs to
collect those errors and then add them to the Puppet::Error message
later.

Remove the guess at the error (time sync).
updates as requested

* combine conditionals in verify_callback
* change formatting of verify errors
use error_message instead of error
(#15595) Clear up tests around ssl errors

The tests around the SSL errors had some unclear parts. They made it
look like the verify method was going to get an OpenSSL::SSL::SSLContext
where in reality it is provided an OpenSSL::X509::StoreContext. There
was also duplication between two tests that has been refactored out.
(#15595) Improve message on SSL errors

The wording on the error message added the text "verify error" in front
of the actual message. That text made for a somewhat confusing message.
This commit removes that text and so the reported error will simply be
"<message> for <subject>"
Replace "the short version" with outline 

Previously, the short version/checklist at the beginning did not line
up with the rest of the document, and was presenting information in 
a confusing order. Now it reflects the way the information is organized
in the larger document, and serves as a good checklist for going through
the process. 
Merge pull request #960 from hkenney/maint/2.7.x/fix_up_contributing_md

(Maint) Fix up CONTRIBUTING.md 
Merge pull request #978 from zaphod42/bug/2.7.x/15595-better-ssl-verify-errors

(#15594) Improve messages for SSL errors
Merge remote-tracking branch 'upstream/2.7.x' into 3.x

* upstream/2.7.x:
  Replace "the short version" with outline
  (#15595) Improve message on SSL errors
  (#15595) Clear up tests around ssl errors
  use error_message instead of error
  updates as requested
  (#15595) Offer better errors for certificate validation errors
  Update CONTRIBUTING.md
  (Maint) Remove some more ambiguity
  (Maint) Be more honest about submission methods
  (Maint) Clarify that Redmine tickets are mandatory
  (Maint) Clarify which branches changes should be based on