Proper remote error handling (404's, 500's)

1. Return 404's straight away (unless already cached)
2. Return any other error code and error content after retrying. Ensure each client that is getting its request blocked also gets the same error code and content.
3. JSLint fixes
4. Fix the Makefile to work on Windows (with the installation of gnu make)