Turned on extra compiler warnings and fixed issues

Turned on Clang's all (excluding no-missing-braces), extra (excluding unused-parameter and missing-field-initializers) and GCC's WARN_SHADOW.

Fixed NUInteger/int type mismatch issues and extra semicolons on method implementations.