Conditional validators.

- Implementation
- Unit tests.

Fixed #5