More building moves

Move more building generation code out of the huge switch statement.

Also adds the ability for building generation to check diagonal tiles as well as orthogonal ones. Currently only used for water showing up on swamp/forest boundaries and extra sidewalk checking (which has removed most of the weird sidewalk-less spots in cities).