router: only check path and query once
router: use first matching HEAD or GET on HEAD requests

node already checks for HEAD internally and disposes of any bodies written to the response (which could be the case if we ended up executing a GET handler).