More consistent nil-checking + internal refactors

Most matchers will fail when matching against nil even when used in Objective-C.  These matchers still currently pass when matching against nil:

- beNil()
- beFalsy()
- raiseException()

to be inline with Swift matchers.

Other internal changes:

- Renamed underscore-prefixed functions
- Matchers that do not match nil will explicitly say to use beNil()
- Increased test coverage when using matchers in Objective-C (now tests error messages and nil matching).