Silence warnings when passing invocations

When passing invocations that return values, you can end up with
compiler warnings that you're not using the result (for example, when
verifying that an `init` method is called). This isn't ideal, and leads
to having to add ugly `#pragma clang` definitions in your test file.
Instead, we can use the C99 `_Pragma()` function to disable these
warnings inside the macros themselves.
Implement support for converting between NSNumber/NSValue types, but raise if the conversion is not lossless.  Solves a number of problems with different BOOL types ('c' vs 'B') and method signature vs NSValue types which can differ a little in different architectures.
Also add support for comparing opaque pointer types versus the same pointer which knows the contents of the structure.
Merge branch 'SupportSimilarValueTypesOCM3-2' of github.com:carllindberg/ocmock into carllindberg-SupportSimilarValueTypesOCM3-2
Merge branch 'gfontenot-gf-unused-values'
Merge branch 'carllindberg-SupportSimilarValueTypesOCM3-2'
Some refactorings. No functional changes.