Add etags support, use fs.readFile instead of fs.readFileSync, add error reporting and more middleware tests