add asynchronicity test harness

use a global sequence array to track sequence of event
use a global semaphore to set whether validator should be valid/invalid, so
we can setup tests without triggering the property observers
add a custom assertion 'occursAfter' for asserting on sequence of events
cover the isValid property on the validated model, so we can record when
it is accessed
(failing) test that settling isValid is async and work of validator is async
Merge branch 'asynchronous_validation' into validate_base_allows_promise