Fix #86: 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().
Add second test, to be thorough