Refactor triggering NPC interactions

Closes #1306

When placing NPCs on the map, we now create a 1x1 event at the NPC's
feet. This means that selecting NPCs with the mouse or the keyboard
behaves the same as other events.

It's worth noting that the event we create is of the "on_trigger" type
and will repeat indefinitely. This means we can't let the player stand
on the same tile as the NPC, or else they won't be able to escape NPC
interaction. I've added a check for collision on NPC tiles. A warning
will be printed and the tile will be blocked if there is no collision
tile where an NPC is located.