accept a range starting from 0 when there are no items

Bug discovered by @dnauck
Use proper HTTP code on empty response

Render correct responses on 204 and 416

Fixes #2