Rewrote and improved hidden label handling in gasharl interfaceCustom

Previously, a single updateHiddenLabel() method was called from
finalizeSetValue(), and that updateHiddenLabel() method used whatever
values were in the name, ip address, and mac address fields, despite
the fact that finalizeSetValue() was explicitly trying to set a new
value for one of those fields.

Now, there are separate updateHiddenLabel() methods for each of the
three fields, and they have enough intelligence to be able to decide
whether or not the MAC address should be included in the label, based
on whether or not the attached IP Network wants to have them.

This is sadly much more complex than I would like.  I wish I had a
templating system that I could use for dynamically generated labels
which would be automatically invoked whenever a field that directly
comprises a label is changed.

This custom logic stuff is for the birds.