Add windows userdata

This is a work-in-progress branch.

This branch adds userdata support for windows systems.
way too many conditionals on OS. I can sadly guarantee that people will start screwing these up almost as soon as they're landed :(.