Finer tracking of symbol use as identifier

The "bucket" mechanism is used both for symbols and identifiers.

If a bucket is used only for identifiers, it will be reported as an
undefined symbol although it is never used as a symbol.

So we introduce "reference counting" for the use as ident:
- counter starts at 0,
- everytime we use the bucket we decrement the counter,
- everytime we use it as an ident we increment the counter.

Therefore, a bucket is really an undefined symbol if it is used at least
one time outside of idents (counter <= 0) and it is undefined.at least