lazy load the puppet and puppet/face as it creates issues on windows

When I use puppet-syntax in conjunction with puppet labs-spec-helper I am required to load puppet even though I don't actually use the puppet-syntax validation tool.  This is causing my windows systems that use puppet to load the open source Puppet which has additional dependencies of some win32 modules instead of using the PE puppet.

By lazy loading the puppet code we can make the loading of puppet an optional step. This occurs because the puppet labs-spec-helper has a hard requirement on puppet-syntax.

https://github.com/puppetlabs/puppetlabs_spec_helper/blob/master/lib/puppetlabs_spec_helper/rake_tasks.rb#L206


Additionally since I moved the loading of puppet I had to use a require in the spec_helper.rb code since puppet is being lazy loaded.
I think this should be moved to `spec/puppet-syntax/manifests_spec.rb` because that's what specifically depends on Puppet outside of `PuppetSyntax` (https://github.com/gds-operations/puppet-syntax/blob/v1.3.0/spec/puppet-syntax/manifests_spec.rb#L76). That might prevent us from introducing another class/task that depends on Puppet but forgets to require it.