(#22956) Use a set to store tags

Tags were being stored in an array, which is inefficient as the number of tags
grows. This commit changes Puppet::Util::Tagging to store tags in a set. A new
class is added, Puppet::Util::TagSet, which subclasses the built in set while
allowing it to be compatible with the old serialization format.
(#22956) Remove temporary TagSet#== implementation
Merge pull request #2008 from pcarlisle/performance/tagging

improve tag performance