`create-tag` should be idempotent

Running multiple identical `create-tag` statements
was not identifying that both `rule` arguments were
identical. This fixes that by allowing each property
of each entity to define how it should be considered
equal via an `equals?` method.

Fixes https://tickets.puppetlabs.com/browse/RAZOR-274