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.
fix typo in $nor operator reference
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
Replace `LITHIUM_*` constant to `Libraries::get()` when possible.
Fixes code covering failing integration test.
Fixes failed integration tests caused by the new test API.
Set `'test'` as the unique connection for integration tests.
Default application library name is no more limited to `'app'`.
Refactoring the test suite. Valid test filename must end with `'Test'`.
Refactor Travis CI.