(#14387) Puppet's Module face should send a User-Agent
The User-Agent will provide the server with some information
about the version of the module tool, the version of puppet, and the
version of ruby that is being used.
This commit also ensures that Puppet::Forge does not depend on the
Puppet::Face code. In order to achieve that the module face now is
responsible for creating the correct Puppet::Forge object and handing
that to the various components of the face for execution.
The Puppet::Face now provides an interface for interacting with the
repository in ways that various users were doing by asking for the
repository directly.