fix byte range behaviour; support correct -500

Support the missing start and numerical end value that means
getting n byte from the end of the file.

Rewrite the range parsing function in the cdmi.py and introduce
and new constant BACKWARDS to signal this case.

Rewrite the functions in storage that parse the constants and
convert them into offsets and move them to storage_common.py.