`json.dumps` can also raise `ValueError` (for circular references)

```
>>> a = []
>>> a.append(a)
>>>
>>> a
[[...]]
>>> json.dumps(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/david/.pythonz/pythons/CPython-2.7.3/lib/python2.7/json/__init__.py", line 231, in dumps
    return _default_encoder.encode(obj)
  File "/Users/david/.pythonz/pythons/CPython-2.7.3/lib/python2.7/json/encoder.py", line 201, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/Users/david/.pythonz/pythons/CPython-2.7.3/lib/python2.7/json/encoder.py", line 264, in iterencode
    return _iterencode(o, 0)
ValueError: Circular reference detected
```