Allow items inside of other items to be used for butchering (includes worn)

Use INT_MAX as "invalid for butchering" instead of magic value 999.
Use recursive look up for butchering tool that are inside other items.
Consider worn items for butchering tools as well.
Make player::butcher_factor const.

Fixes #7319