Fixed some CouchDB REST conformance issues

Discovered by the couchdb-harness unit test suite.

* Doc PUT/DELETE should use ?rev= query or If-Match: header, and
  complain on mismatch.
* Multiple range in a Range: header caused an assertion failure.
* A no-op Range: header (entire content range) should return 200.
* Unsatisfiable Range: header wasn't causing a 416 response.