Add OS module, reorganize MacOS modules under new namespace

This introduces a generic `OS` module, and moves the `MacOS` module underneath it. Other modules previously under `MacOS` (`Xcode`, etc.) are moved as well.

The `MacoS` constant will be preserved forever for compatibility.

I decided to be aggressive and shift from the `module X::Y` form to the `module X; module Y` form so that we don't have to keep requiring `os/mac/xcode` and friends at the bottom of files.

This is almost entirely code movement, aside from the methods in the `OS` module.

In the future, concepts whose implementations differ based on the platform can be moved to the `OS` module. For example, I would eventually like to add `OS.system` that dispatches using the correct `PATH`, rather than status quo, which wraps each callsite in a block.

Due to the large amount of code movement, a more reasonable diff can be obtained by ignoring whitespace:

https://github.com/jacknagel/homebrew/compare/macos?w=1