Bug 891991: Add support for Windows

This lets toplevel::base complete without errors or repeated changes on
Windows.

This touches a lot of files!  The big deals were:
 * mode bits, for which I wrote a puppet function
 * can't purge all users (TODO)
 * no sudoers
 * concat had to be rewritten to use ruby and not shell