hgweb: protocol functions take repo instead of web
This makes it much easier for implementers of hgweb alternatives to simply
call into protocol functions after setting up a repo and a request.
# should print nothing
# should fail
abort: path 'b/x' is inside repo 'b'
abort: path 'b/x' is inside repo 'b'
# should fail
abort: path 'b/x' is inside repo 'b'
# should arguably print nothing
# should fail
abort: path 'b/a' is inside repo 'b'