return (value, path = new Path()) => {
    const checker = getChecker();
    return checker(value, path);
  }
wrapper to allow for passing a lazy checker value. This enables
recursive types by allowing for passing in the returned value of
another checker. For example:

```javascript
const user = object({
  id: number(),
  name: string(),
  friends: array(lazy(() => user))
});
```

Example of array with arbitrary nesting depth:
```jsx
const entry = or(number(), array(lazy(() => entry)));
const nestedArray = array(entry);
```