Enable extra, shadowing, and documentation warnings
Fix documentation and conversion warnings
Add index creation options

Excluding declarations from a PCH is a substantial performance
improvement when traversing a number of translation units that depend on
system umbrella headers such as Foundation.h.