Make #main receive a port as an argument

Method #main should be able to receive a port number to be used for the
server. If no port argument is received, the default of 8080 should be
used.
Add method #file-response

This method should receive a string filename and optionally a complete
path to the file. The method should return a response map if the file
exists, containing the body of the file. If the file does not exist, the
method should return nil.
Add method #map-request

This method should receive a string as the request from a client. A map
should be constructed using the type (e.g. GET, PUT, POST), the path
(e.g. '/', '/foo/bar/', 'index.html'), and the HTTP protocol version,
all derived from the request string.

This map should then be returned.
Add method #not-found

This method should return a default response in events where a valid
resource request could not be fulfilled.
Make #file-response return 'not found'

This method should return a standard 404 'not found' response in the
event that the file requested does not exist.
Create files and directory for testing
Add method #directory-response

This method should receive a request map and return a response map.
Inside the response body should be a list of directory contents for the
requested directory.

If the directory does not exist, a 'not found' response should be
returned.
Add method #route-request

This polymorphic method should receive a mapped request. The request
path should be matched to defined 'routes' assigned within the handler.
A response map should be returned.
Combine response methods

Methods #file-response and #directory-response should be combined into a
new method #resource-response. They both act upon the file system and
are not easily distinguishable from each other in function structure.
Make #map-request parse the host
Add method #read-request-header

This method should take a client reader and return a string containing
the contents of the request header.
Add method #res-response

This method should receive a request map and return a response map
according to the following rules:
 - if file, copy file contents
 - if directory, list directory contents
 - if does not exist, 404 'not found' error
Replace #resource-response

Replace all use of method #resource-response with that of the its
replacement method #res-response. The original #resource-response should
be removed with the new method taking its name.
Make #resource-response populate response header

This method should amend its :header field to announce content length,
as expected in the HTTP response.
Make #resource-response include status message

HTTP status messages include three components:
 - the HTTP protocol version (e.g. 1.1)
 - the status code (e.g. 200, 404, etc.)
 - the status type message (e.g. "OK" or "Not Found")
Add fields to response header

The response header map should also include the following fields:
 - host (.e.g. "localhost:8080", "http://www.google.com/")
 - content-type (e.g. "text/html")
Refactor

New methods have been implemented which condense and replace existing
implementations.
Make #map-request recognize additional types

Request types POST and HEAD should be available.
Copy library /request_handler to /handler
Replace use of /request_handler library

Library /request_handler should be replaced by the /handler library.