extend ServeStatic handler to allow programatically calling the handle()
function from within in-progress Requests
also use file's timestamp as file's modified time in the ZIP archive
init setContentDisposition and setContentType functions immediately as
private functions to reduce complexity
so instead check for the required map/store before using them
also fixed content-type override ending up with duplicate headers
both headers cannot co-exist at the same time, so we pass the expected
content-length value into 2nd param of Response.stream(), so that the
internal can decide to add it only when required