Modify AssertArrayHasKey and AssertArrayHasNotKey

Currently the new Assertion methods only check for a key
with `isset` and that a value is present (not null).

This change modifies the `isset` to use `array_key_exists`
to verify a key is in an array regardless of the value of
they key. This ensure if the value is null, and they key
is there the test passes.

It also checks to see if ArrayAccess is being inherited
from. If so it falls back to isset since `array_key_exsts`
only checks primitive arrays.
Merge pull request #838 from buddylindsey/modify_key_assertions

Modify AssertHasKey and AssertHasNotKey to work with null value
add a test to demonstrate failure of deeply nested document 'exists' attribute
fix issue where a document retrieved from the database would not recursively set the 'exists' flag for all nested documents
fix typo in $nor operator reference
Merge pull request #853 from pixelcog/mongodb-nor

fix typo in $nor operator reference
Merge pull request #852 from pixelcog/document-exists-fix

Fix `exists` property of deeply nested documents.