(PUP-2924) Initialize resources from Type classes
This patch extends the signature of Puppet::Resource#initialize to accept
subclasses of Puppet::Type as arguments. This allows resource_type to be
set during initialzation for some cases and eliminates a later, costly, call to
environment.known_resource_types.