Smarter range parsing

It used to return (0, None) when one of the 2 values was invalid (not an int).
Now it defaults the start byte to 0 if invalid, and the end byte to None,
independently.
Added tests for shiva.fileserver.get_range_bytes

And the fix for a couple of issues that the tests found.
Returning 204 for empty responses
F user