implemented HTTP server and associated tests

Your use of Index, Attribute, Syntax, Name, and Value errors is questionable. The best thing to do here is define your own errors, and call them Http400Error, Http404Error, Http405Error, etc. Index, Attribute, etc all refer to specific situations so you're using them in confusing ways.