Raising a useful error and adding a speccific tests

Fixes #506
Ah... okay, so you want `(isinstance(foo, Iterable) or (foo is None))`. It might be useful to break this out of a list comprehension as it's very difficult to follow