(#14822) Re-evaluate features if they previously were false

Allow features to be re-evaluated each time they are checked, if they
previously evaluated to false.  This allows for providers by features to have
dependencies installed during a run and then for the feature state to change
from false to true.

Caching of feature results that were previously true has been kept.  Caching of
blocks used to evaluate features remains unaffected and are still run only once.
(#14822) Use feature confine for feature tests during run

Fixes two providers to use the "confine :feature" statement, allowing for the
features to be re-evaluated during a run instead of only once.
Fixed unhandled --ignoreschedules in puppet kick
(Maint) Move initialize near top

The initialize method was hard to find buried down after line 300. This
moves it closer to the top so that a reader of the code and more quickly
see how things are setup.
(Maint) Extract class to encapsulate value translation

The value translation code has been buried deep inside the general
settings handling, which has made it hard to find, reuse, and test. This
pulls out a class that can be used for setting value translation.
(Maint) Extract value translator for settings

Pulled out a class for the translating of values that are going to be
used as settings and added tests around that code.
(Maint) Use value translator directly

This removes an unneeded method that simply called through to the value
translator. There don't seem to be any users outside of the settings.rb
file that were actually using this method.
(Maint) Remove unneeded parse_file method

This method simply delegated to another class. There were no users
outside of the settings.rb file, and so it is just inlined.
(Maint) Remove unused method sectionlist

This method isn't being used anywhere, even in other projects that I
checked.
(Maint) Remove code to support multiple config files

Support for merging config files had been removed, but some of the
supporting code was missed during the removal. This removes the rest of
the support in settings.rb to handle merging multiple config files.
(#16768) Clarify documentation about the purpose of --no-client

Per user comments on the mailing list and in #16768, they thought
a SIGUSR1 would trigger an agent running with --no-client, which
it doesn't.

This commit clarifies the documentation to match reality: only
a puppet kick will trigger an agent running with --no-client.
(#15989) Allow setting arity on functions

The arity value works the same way as for blocks in Ruby.
(#15989) Set arity on functions

Set the arity on builtin functions.
(#15989) Tests for function arity

Test that setting arity on functions work as it should.
Update PUPPETVERSION for 3.0.1-rc1
(#16698) Exclude enc+storeconfig test from solaris

This test was written only with ubuntu and centos in mind. Testing only
on those platforms should be enough and maintaining it on too many
platforms because of the package installations would be a burden.
(Maint) Fix acceptance test to work on centos5
Merge remote-tracking branch 'upstream/3.0.x'

* upstream/3.0.x:
  (Maint) Fix acceptance test to work on centos5
  (#16698) Exclude enc+storeconfig test from solaris
  Update PUPPETVERSION for 3.0.1-rc1
(#7962) Added description of 'duration' settings format.

Descriptions for settings of the DurationSetting type indicate that they
'can be specified as a duration'. This adds the description of how a
duration should be specified to the configuration reference section.

This also adds back a pertinant sentence accidentally removed from the
`ca_ttl` setting description.
(Maint) Exclude test from windows

The windows tests run with a rhel 6 master right now, this has been
written to work with ubuntu 10 and centos 5. That provides enough
coverage that this feature works without having it also run on rhel 6.