Split OS specific macros into make/<OS>.mk

This PR adds some "OS specific" make files and introduces some new defines. I made a couple changes in tools.mk to illustrate how to use the defines. I have a fair bit more but I wanted to make this a small targeted commit for discussion first.

On a side note, this is a start of some patches to try and make things a bit nicer under Windows.