(maint) No longer install json gem for future parser acceptance runs

Source based acceptance test runs with --parser future were installing
json gem do to binder requirements, but as much of the binder has been
removed, json is no longer needed.
(maint) Acceptance test selector tests for a string rather than a type

Bare upper case words are types in the future parser, so this test
fails because $operatingsystem returns a string which gets compared to
the Resource[Fedora] type.  Explicity quoting so it's clear what the
intention is in the current parser and so that it works properly with
the future parser.
Merge branch 'maint/master/future-parser-acceptance-fixes'

* maint/master/future-parser-acceptance-fixes:
  (maint) Acceptance test selector tests for a string rather than a type
  (maint) No longer install json gem for future parser acceptance runs
(maint) Fix inconsistency when case option is a Type.

The way the implementation worked made it impossible to differentiate
between an instance and its type.
Merge pull request #2204 from hlindberg/maint_case-type-option-inconsistent

(maint) Fix inconsistency when case option is a Type.
(maint) Remove support for categories in the binder

This removes the ability to define categories and use
predicated bindings. Instead, all contributors should evaluate
predicates and only contribute applicable bindings.

This reduces the complexity of the binder.

The support for predicated bindings was only there to support
the now removed experimental "hiera2-data-in-modules"
(yardoc) Fix yardoc text for Injector and BindingsFactory
(maint) Refactor Binder to not use two step creation.

Earlier it was required to first create an instance of Binder,
and then ask it to configure categories, and then layers. Now
that categories are removed, the creation can be made in one
step and the layered bindings are now passed to the constructor.

This removes the need to have methods to query if the binder
is configured.

This also adds a first step in supporting creation of a stacked
injector (the binder can not accept a parent binder - this is w.i.p).
(maint) Cleanup spec tests after refactor of binder one step create
(maint) Add support for final binding

A final binding may not be overridden in a higher layer.
(maint) Simply confine test to any platform with Ruby shadow

Original confine was prone to errors in platform pattern, which we saw
when testing fedora18 whose platform tag no longer contains 'fc-' in our
current acceptance/config/nodes.  This would fall through to the false
case, which meant the host was /not/ rejected.  And then fedora18 from a
source checkout would run the test and fail, because Ruby shadow lib is not
installed by default.  This only turned up because the future parser
acceptance job was running from source checkouts (because one of the
nodes it was testing is Windows...)  At any rate, it proved confusing.

This change just simplifies the confine to reject a host if the Ruby
shadow library is not present.  Because without that, we can't
manipulate passwords, and have nothing to test.
Merge pull request #2207 from jpartlow/maint/master/simplify-confine-for-6857-test

(maint) Simply confine test to any platform with Ruby shadow
(maint) Add handling of layered multibind

This adds correct handling of multibind contributions when
injectors are stacked. Higher layer contributions cannot be allowed
to leave behind a cached multibind containing entries from an overriding
injector when it goes out of scope.
(maint) Add convenient create/override ability to Injector

Setting up the initial injector, as well as creating an override
required quite a bit of gymnastics. This is now made much simpler.

The Injector now has class methods create, create_from_model, and
create_from_hash. The instance has override, override_with_model,
override_with_hash.
Merge pull request #2208 from hlindberg/maint_remove-categories-add-dynamic-layers

(PUP-546)(maint) remove categories add dynamic layers
(PUP-1176) Add evaluator feature switch for future/current evaluator

This adds an --evaluator future/current setting to control if
the future evaluator should be used or not when using the future
parser. It is set to "on" (i.e. "future") by default. Setting it to
"current" turns off the future evaluator.

This commit only contains the setting itself.
(PUP-1176) Add feature switch for evaluator to ParserFactory

This adds the --evaluator future/current switch to the ParserFactory.
It is only in effect when using --parser future. By default the
future evaluator is used, but the older transforming evaluator can
be used by also stating --evaluator current.
(maint) Fix typo in documentation for --parser and --evaluator

A fature is not spelled that way.
Merge pull request #2209 from hlindberg/pup-1176_evaluator-feature-switch

(PUP-1176) Add evaluator feature switch