Route item spawns through add_item_or_charges() for correct obstacle handling.

The issue is items created via spawn_item() were being placed directly at a map location instead of routing through the logic to find an appropriate location for them.  This resulted in them getting dropped in inappropriate places like window frames.