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.