Mac support

I'd like to get your input on this again. My branch is at the point where it works and does the right thing. It's not anywhere near the level of functionality iOS has and realistically won't be for some time. Not to mention we have to deal with multiple windows, etc. But it's a good base and it's usable.

Here's my thing. It's a pain in the ass to merge upstream into my fork since I have to keep splitting iOS stuff out into its own category. I'm happy to do that merge, but I'd rather do it once and be done than keep doing it in hopes it'll get pulled into `square/KIF`.

So I'm wondering what you'd like to see from it before merging it into `square/KIF`. I'd be happy to explore solutions other than the category splitting, if you guys have any ideas. iOS/Mac-specific subclasses, etc.

Note that obviously this pull request, as-is, isn't up-to-date with `square/KIF` since it is, as afore mentioned, a pain in the ass to merge :)