add support for os specific feature detection ala ruby features
refactor #108 to use os support