improve argument handling in girder ansible module
improve argument handling in girder ansible module

Specifically, fixes two issues in how the girder
ansible module handles parameters given to its
`setting` mode.

First, the module fails to handle the case of None
for `value` (default value) and of None for
`existing_value` (returned from girder server).

Second, the module tries to compare the new and
existing values of a setting for the sake of
idempotency, but seems to use a few simple
heuristics that assume certain hashability
properties of the two values.  Specifically, it
seems to require that the values be limited to
simple, or first-order compoundness.  For example,
it accepts a compound object of scalars, but not a
compound object of such compound objects.  This
causes trouble when combined with Ansible's
insistance on deserializing anything that looks
like JSON at a configuration document's leaves.

To address both these issues, this commit makes
two major changes.  First, it adds a function for
canonicalizing the values.  This canonicalization
is performed by deserializing valid JSON strings
into Python objects, and/or traversing such
objects looking for valid JSON fragments to
deserialize.  Second, the comparison heuristics
are replaced with a full deep comparison to most
accurately determine if a system setting had, in
fact, been changed.

Kitware/girder,data-exp-lab/girder,girder/girder,kotfic/girder,RafaelPalomar/girder,data-exp-lab/girder,girder/girder,girder/girder,RafaelPalomar/girder,data-exp-lab/girder,adsorensen/girder,Xarthisius/girder,kotfic/girder,Kitware/girder,manthey/girder,jbeezley/girder,jbeezley/girder,kotfic/girder,RafaelPalomar/girder,Xarthisius/girder,RafaelPalomar/girder,manthey/girder,adsorensen/girder,Xarthisius/girder,RafaelPalomar/girder,jbeezley/girder,adsorensen/girder,Kitware/girder,kotfic/girder,kotfic/girder,data-exp-lab/girder,manthey/girder,girder/girder,adsorensen/girder,manthey/girder,Kitware/girder,data-exp-lab/girder,adsorensen/girder,Xarthisius/girder,Xarthisius/girder,jbeezley/girder