Issue/#34 - Passing a list of callables for validation

I took sloria's comment into consideration and refactored slightly the code to handle collections and generator (+expanding the unit test cases)
Instead of checking against `None` here, why not check the truthiness of `self.validate` at the beginning? That way you can remove this branch as well as check for `if len(validators) > 0`

```python
if self.validate:
    if utils.is_iterable_but_not_string(self.validate):
        # ...
    for validator in validators:
        # ...
```