Refactor passability checks

Makes big doors work properly, and also will make adding new special
objects much easier.