(maint) Update minimum links property
(NETDEV-17) Remove snmp_{protocol,location,contact} types

In preparation for consolidating the management of these resources under
the `network_snmp` type.
(NETDEV-17) Add network_snmp type

This patch adds the network_snmp type as recommended by our partners.
This type consolidates the information from the previous location,
contact, and overall enable types.
Merge branch 'nd17_snmp_rename'

* nd17_snmp_rename:
  (NETDEV-17) Add network_snmp type
  (NETDEV-17) Remove snmp_{protocol,location,contact} types
(NETDEV-18) Make network_snmp not ensurable

While implementing the network_snmp type I've run into new information
that there will really only ever be a single resource of this type. As a
result, there isn't really a need to make the type ensurable because the
global SNMP settings for the device are only enabled or disabled, not
added or removed. Because the resource is always "present" the type
should have the ensure attribute removed.
(NETDEV-19) Make the snmp_community type ensurable

Without this patch the snmp_community type has no way to create new
community resources on the target device or remove existing resources
from the device.  This is a problem because  device can have multiple
community strings and the end user needs to be able to add or remove
them.  This patch addresses the problem by making the snmp_community
type ensurable.
(NETDEV-20) Change snmp receiver namevar to host, port, username

Without this patch the snmp_notification_receiver specifies the name
parameter as the sole namevar.  This is a problem because there can be
multiple resources with the same hostname or IP address.  This patch
addresses the problem by changing the type to build a composite namevar
that joins hostname, port, and username with a colon to form the
resource identifier.  This looks like:

    $ puppet resource snmp_notification_receiver
    snmp_notification_receiver { '127.0.0.1:public:162':
      ensure   => 'present',
      security => 'noauth',
      type     => 'traps',
      version  => 'v3',
    }
    snmp_notification_receiver { '127.0.0.2:public:162':
      ensure   => 'present',
      security => 'noauth',
      type     => 'traps',
      version  => 'v3',
    }

NOTE: Namevar components cannot be properties because of the
[key_attribute_parameters class method][key_attribute_parameters] on the
type.

This patch also removes the community attribute.  The username property
now represents both the snmp username or the snmp community depending on
the snmp version of the notification receiver.

[key_attribute_parameters]: https://github.com/puppetlabs/puppet/blob/3.7.1/lib/puppet/type.rb#L355-L361
Merge branch 'nd20_composite_namevar'

* nd20_composite_namevar:
  (NETDEV-20) Change snmp receiver namevar to host, port, username
(NETDEV-22) Change snmp_user to composite namevar on name, version

Without this patch the snmp_user type identifies resources by name only.
This is a problem because the same user name can exist multiple times on
the target device provided each user is for a different SNMP version.
This patch addresses the problem by changing the resource model to use
version as a namevar component.
Merge branch 'nd22_snmp_user_composite_namevar'

* nd22_snmp_user_composite_namevar:
  (NETDEV-22) Change snmp_user to composite namevar on name, version
Add enable property to radius_global type