Fix diagonal distance calc

Check the first commit for the real fix, the rest is reindention.
map::sees, and therefore monsters, were still using square distance for calculating sight vision, so e.g. tankbots could see you from just outside your view distance if they were close to a sub-cardinal direction.
With this fix, you should always have the expected buffer where you can always see monsters before they can see you.