Don't shop-donate non-empty bags dropped in sellobj_state SELL_DONTSELL

In NetHack source-diver jargon, containers belonging to the hero could
land in costly_spots under non-selling conditions without having their
no_charge flag set if said container was saleable() to the shop,
effectively donating the container (but not its contents) to the shop.

This could cause bags belonging to the hero to mysteriously become the
shopkeeper's property if they were to be dropped under
sellobj_state(SELL_DONTSELL).  Currently this state is only set for
partly-eaten food when eating is interrupted, so this doesn't happen in
practice.

In theory it could also happen if a zero-cost container owned by the
hero holding gold and other objects were dropped in a general store or
tool shop, but in practice there are no zero-cost containers, so nobody
ever noticed this.

This may be related to SC343-21: "Accounting is incorrect for containers
dropped in a shop that does not sell them."

This bug also exists in vanilla NetHack and likely all of its variants.
Credit/debit gold in containers even in sellobj_state SELL_DONTSELL

There's no capacity for the shop logic to handle gold without also
changing the credit/debit within it, so gold must always be handled in
sellobj, even when the state of it is set to SELL_DONTSELL.

This is required for an upcoming commit that will fix billing and credit
when nesting containers on shop floors.

This bug also exists in vanilla NetHack and likely all of its variants.
Fix billing/credit when hero nests their containers on a shop floor

This fixes a bug where the hero could accidentally donate the contents
of their bag to a shopkeeper if they put it into another bag on the shop
floor that also belonged to the hero.  To reproduce:

 1. Drop a sack on a shop floor, but don't sell it.
 2. Get another sack and put in non-shop-owned items.
 3. Put the sack with items into the sack on the shop floor.
 4. Take out the sack with items from the sack on the shop floor.

The shopkeeper will claim you owe them for the items in the sack, and
viewing the contents of the sack will show them belonging to the
shopkeeper.

This bug also exists in vanilla NetHack and likely all of its variants.
Bill/credit tipped container contents as if they had been picked up

This fixes shopkeepers buying their own goods when containers were
tipped on their shop floors (amongst other issues), by applying the
special logic for objects looted from containers on shop floors to the
contents of tipped containers.

Credit to guest41 and UnNetHack r1852 for spotting the issue, prompting
me to research the logic of containers in shops, leading to this fix for
this branch's #tip command, plus several fixes for bugs with containers
in shops in vanilla NetHack featured in previous commits.

Major findings of the shop logic research:

 * Objects on shop floors belong to the shopkeeper, unless they're
   flagged no_charge, which is used to mark objects the player drops
   but chooses not to sell or the shopkeeper doesn't accept.

 * Picking up a shop object adds it to the shopkeeper's bill and sets
   the object's unpaid flag, unless the object was flagged no_charge.

 * Regardless of billing/unpaid, all picked up objects have their
   no_charge flag unset.  Drop-to-sell only checks billing/unpaid, and
   not the no_charge flag.

 * All of the above bookkeeping applies recursively to container
   contents as well, even when not buying or selling, e.g. dropping but
   not selling a bag in a shop will flag the bag and all of its contents
   as no_charge, while picking up a bag in a shop will bill for all
   contents not flagged no_charge.

 * Gold always adds to credit/debit when dropped and takes away from
   credit/debit when picked up, even if the gold is in a container, or
   the player isn't buying/selling anything.

This is meant to go with commit 2e1b9c5787 (add new #tip command).