Add the 'produce' machinery

As a sideeffect of evaluating the code associated with a
Puppet::Parser::Resource, define a produced capability and add it to the
catalog.

This is kicked off from Puppet::Resource::Type#evaluate_code
Add the 'consume' machinery

As a sideeffect of setting resource parameters in
Puppet::Resource::Type#set_resource_parameters, look for a consumed
resource, first in the local catalog, and then in PuppetDB.
Add a capability to the model for a defined type (ResourceTypeDefinition)
Set a capability from the parser
Language support for consumes/produces annotation for a defined type

Note that quite a few existing tests needed to be changed because (a)
'produces' is now a keyword and (b) the internal representation of a define
in Pops has changed