(NETDEV-24) Update tacacs type specification

Without this patch the tacacs_server type does not match the required
provider implementation.  This patch addresses the problem by updating
the type specification to use hostname and port as the components of the
identity.  The change also makes the tacacs_server ensurable.
Make tacacs_server_group ensurable
(maint) Fix formatting of array properties
(NETDEV-23) Add network_dns type

Without this patch there is no type to manage the DNS configuration of a
target device.  This patch addresses the problem by adding the
network_dns type with a namevar of `name` (only used to identify the
resources in the Puppet catalog), a string property for the domain, and
array properties of `search` and `servers`.
(NETDEV-23) Improve network_dns change messages

Without this patch the network_dns change messages look like strings
when comparing the servers and search properties, which are modeled as
Array's.  This patch addresses the problem by updating the formatting
methods for the search and servers properties to display Array's using
Puppet's format_value_for_display method.

This patch also updates the spec tests to use shared behaviors.
Merge branch 'arista-eosplus-master'

* arista-eosplus-master:
  (NETDEV-23) Improve network_dns change messages
  (NETDEV-23) Add network_dns type