Change checkRecursive key name
Fix #83: cache results for recursive schemas

When dealing with recursive schemas, don't just return null (which
assumes a pass) - cache the errors from last time, and add them to the
current error list.

It was working fine for the plain validate() method (when the only time
you'd see a data/schema pair twice is if it had no errors), but was
causing problems with validateMultiple().