Http server almost done. Tests working but need to be fleshed out a bit more.
Add comment to test_parse_one() suggesting better implementation--no time to change it now
HTTP Server now meets the reqs for HTTP2 assignment. Tests are about half way to where they need to be, but all current tests pass. Manual testing can be done with the browser or with the echo_client. The echo_client has also been updated to properly accumulate an entire response so that it can be used for manual testing effectively.
Remove socket.shutdown() calls that were commented out.
Revise HttpServer._retrieve_resource to display links to resources in a directory and to append / to sub directory URIs
Revise HttpServer._retrieve_resource to display resources alphabetically by directory then alphabetically by file.
Revise test_parse_one to build the expected directory structure alphabetically with directories before files
Reviese HttpServer() to default the ip address as a bytestring instead of unicode
Revise HttpServer.gen_response() to wrap the try/except more tightly around the potential failure point.
Revise HttpServer.gen_response() to stay DRY by joining lines with rn instead of adding it to each line.
Revise tests that use \r\n to expect the appropriate number
Revise HttpServer.start_listening() to properly handle the potential exception raised by .gen_response()
Change buffersize to 4096, file writing to 'rb', and add REUSEADDR socket option
Add tests for 403 Forbidden error and response; also add tests for all supported status codes
Revise HttpServer.start_listening() to send the error code message as body if an HTML error response is sent
Revise HttpServer.start_listening() to reset the body and headers between requests; remove code that was commented out.
Prepend _ to gen_response() and process_request() to indicate they are non-public
Add docstring to _check_uri()