(PUP-2733) Refactor binder's use of Puppetx

This refactors the binder's use of Puppetx. The problem with the
previous implementation was that it squatted on the Puppetx namespace in
a way that made it difficult to use for its original purpose.

This commit changes the organization. The extension points that define
how puppet can be extended are in Puppet:Spi namespaced modules. One
module per extension. Each such extension specifies the type and the
symbols to use when binding services.

A Puppet::Spi::Configuration is responsible for configuring/wiring
the service programming interface(s) by registering them for inclusion
in the binder(s) being set up.

The only currently existing implementation of a default service is
the Json syntax checker - it has also moved out from the Puppetx
namespace and is now found in Puppet::SyntaxCheckers::Json.