python3: range(x) -> list(range(x))
do not save temp/
key for shelve is now string

The unicode_literals made the key unicode, which it couldn't handle.
Added new tests for obj_id is string or unicode

The result of problems with unicode_literals
More python 3 compatibility
list(range(x)) is not needed for an iterator