basic py3.3 compatibility while keeping py2.7 compatibility

makes the api callable from py2.x and py3.x. Since scrapy itself is not yet python3 compatible this might be still useful if one has a control application/api written in py3 which should be able to control scrapy crawlers. 
Using `list(range(...))` is worse than `range()` for py3 and a regression to current code for py2.

We can add `six` library to dependencies and use `six.moves.range()` or put something like the following at the top of his module:

```python
try:
    range = xrange
except NameError:
    pass
```

Code like this avoids adding new dependencies but we know it become unmanageable in the long term.