config: Define macro for __has_feature when undefined.

Defaults to always returning 1 if not provided. Differs from
__has_extension in that there's no expectation that an extension will
be available, but there's always the expectation that language features
are available. If they're unavailable, the compiler sucks.

(Note: thread_local is unavailable via Apple's Clang on OS X. You know
what that means.)
Add macros for detecting clang/msvc/gnu-ness.

Bearing in mind that S_CLANG and S_GNU are not exclusive and that
obviously anyone could define one of these if they're not being
careful.
Use S_GNU in place of __GNUC__
Change indentation of preprocessor statements.

This messes up highlighting in Sublime Text, but it doesn't piss off
auto-indent as much, so it's a trade-off. I'd say taking the time to
keep it correctly indented is more annoying than a preprocessor
statement being incorrectly highlighted.
Remove YES/NO definitions.

Unused, decided the potential for conflict with Cocoa is too much of a
possible risk.