fix oneOf attribute logic

I found some issues with oneOf that wouldn't validate some schemas I was expecting to pass.  In trying to get my schemas to pass I ended up refactoring the oneOf attribute's logic.

Existing oneOf tests still pass along with additional test I added.