create-* commands should return different status if already exists

This updates the create-* commands to handle duplicates more nicely: if the
requested object is identical to the current object, it will simply return
success to the caller, since their desired state was achieved.

If any fields conflict between the two, however, this will raise the new
conflict error code, and report a 409 error along with detail of which fields
are mismatched between the two.

Identical is defined as "any publicly visible fields have equal values", which
includes "the value of being absent" on both sides -- that is, you can't add
an optional field to an existing object and have a match.

https://tickets.puppetlabs.com/browse/RAZOR-185
Signed-off-by: Daniel Pittman <daniel@rimspace.net>