Add windows userdata

This is a work-in-progress branch.

This branch adds userdata support for windows systems.
so these two feel like they'd be better supported as two distinct renderers..? ie something like

    renderer.MkDir(c.Dir())
    renderer.WriteFile(f.File(agentConfigFilename), data, 0600)

Without this I can all too easily see people adding a file for just one OS and nobody discovering it until CI time...