Add tests and implementation for the following - [x] `oneOf` - [x] `anyOf` - [x] `allOf` - [x] `not` - [ ] `discriminator`