dev: move Room and Door functions into prototypes. This reduced memory use from 100 MB to 86 MB (saved 14%) and sped up level generation from 709 ms to 557 ms (saved 20%). The tradeoff is that I can't use private variables when I do things this way, but I wasn't using any for those objects anyway
dev: move enemy functions into prototype to save a bit more memory