(PUP-1029) Make map function consistent with others

The map function only supported a single argument which made it
impossible to map based on index in an Array, and made in awkward
to map on only hash key or value.

Now the map function accepts either value (as before), or index/value,
or key/value (for hash).
Merge pull request #2337 from hlindberg/pup-1029_map-function-consistency

(PUP-1029) Make map function consistent with others
(PUP-1029) Update documentation of map function

Updates documentation of the map function to also show examples
of using index/value, key/value.
(PUP-753) Write a JMeter CSV log

This adds a JMeter format CSV log of the benchmark runs. This log will
allow us to track the performance over time via Jenkins and the
Performance plugin.
Merge pull request #2335 from ptomulik/fix/classgen_regexp

fix regular expression in ClassGen#is_constant_defined?
(doc) Stop using non-words

"Contributioning", although very cool sounding, is not actually a word.
It is "Contributing" to the rest of the world.
(doc) Clarify use of --profile

There are a few different ways that you can use profile. This splits up
the explanation into the 3 different cases in which it can be enabled
and a bit of explanation about when you might use each one.
(doc) Point readers to how to run acceptance tests
(doc) Update rspec examples to show desired style

There are a couple stylistic points about rspec that we need to follow:

  * be explicit
  * say what it does

"Be explicity" means that we use `before :each` instead of `before`.
This lowers the amount of mental energy that a reader needs to use to
understand how things will fit together.

"Say what it does" means that the examples read as declarations of what
the system under test *does*. A writer must avoid wish-washy words such
as "should" or "could" or "may". Instead state exactly what the system
does in that situation.
(PUP-753) Add task to run/profile all scenarios

In order to make it easy to bulk collect the benchmark data there needs
to be a single command to run all of the scenarios. This adds
`benchmark:all:run` and `benchmark:all:profile` to achieve this.
(PUP-753) Write times in millis

The JMeter format is to use milliseconds to express time. This changes
the timestamp and elapsed time to be in millis.
(PUP-753) Benchmark system startup

This adds a simple benchmark to check how long it takes to get puppet to
respond to commands on the CLI. This is an important aspect of percieved
performance for many users. And for anyone trying to script puppet
commands, this becomes a *very* important aspect of actual system
performance.
(PUP-789) Break yumrepo into a type/provider.

This work strips out all of the provider code from the type, and
creates a new ruby provider for yumrepo.

While this code still uses inifile it's been rewritten to take advantage
of the modernization of Puppet.  It's now a little easier to understand
and test.

This covers: #8758, #9293, #22304 (projects.puppetlabs.com)
(maint) Remove the noop check here, we don't allow flush to be called when
noop is set.
Merge pull request #2338 from zaphod42/feature/master/pup-753-record-benchmark-times

(PUP-753) Write a JMeter CSV log
(PUP-1407) Rewrite certificate_revocation_list test to use a temporary CA instead of mocks
(PUP-1407) Verify that CRL times are within expected ranges

Modifies the test so that we verify the CRL last and next update times are
in UTC time (per the RFC) and that the number of seconds since the epoch
are within 5 minutes (plus or minus) of the expected value.

Also modifies the test to use public APIs to access the CA cert and
private key.
(PUP-1407) Add authorityKeyIdentifier to CRL to make the CA conform to RFC5280

RFC5280 requires CRLs to contain the authorityKeyIdentifier extension[1].
It identifies the public key that corresponds to the private key used to
sign the CRL.

RFC5280 also requires the use of the key identifier method. This
implementation uses the key identifier format described in OpenSSL[2].
In particular, the `always` value is used to require that the extension
is present.

Also note that we need to invoke the `add_extension` method instead of
overwriting the extensions.

[1] http://tools.ietf.org/html/rfc5280#section-5.2.1
[2] http://www.openssl.org/docs/apps/x509v3_config.html#Authority_Key_Identifier_
(PUP-1407) Verify extensions are still present after revocation

Previously, we were only testing that the crlNumber and authorityKeyIdentifier
extensions were present when a CRL is generated, but not when it is revoked.

This adds helpers for testing the extensions and updates both cases to use them.
It also is more explicit in verifying that the authorityKeyIdentifier extension
has the same value as the subjectKeyIdentifier from the issuing CA cert.
(PUP-1407) Actually test deserialization and CRLReasons

Previously, the test was stubbing everything about how CRL
deserialization worked to the point that `from_s('my crl')` was passing
when it shouldn't. The from_s method expects a PEM encoded string.

This commit actually tests deserialization, and adds tests to ensure the
CRL contains CRLReason entry with valid reason codes.