Improve some formatting, fix some typos, and add some clearer descriptions to the Readme file.
Fix: The args passed to phantomjs command were not shell escaped.

This caused problems if, for example, the URL contained a '&' character, since that has special
meaning to the shell.

Changed it to pass an array to IO.popen instead of using `#{cmd}`.
Add cmd back in (but escape the arguments this time) so that we can output the command exactly as it
will be run for easier command-line debugging.
Add a debug configuration option that you can enable if you want to see details such as the
phantomjs command line that it's about to execute.
Minor cleanup in middleware_spec.rb
Add new html_url method.  Fix it to work for the case where the request URL contains a query string.
Add some debug output to the middleware (only enabled if the debug option is set to true)
Extract some code out of the main Middleware class into a new BaseMiddleware class.
Extracted out a new rendering_started_at method to make it clearer what the "rendering_flag"
actually means.
Extract out two new methods, pdf_body and pdf_headers, into base class to simplify render_as_pdf!
Add some tests specifically for rendering_in_progress?, already_rendered?, and up_to_date?

Add a test for the Content-Type header.

Change rendering_in_progress? to return false when it would have returned nil.
Fix commented-out "should render a pdf file" test
Spell out test_file as 2 words.
Actually create an expectation from the value that valid_pdf returns.
Move test_file and valid_pdf to spec_helper.rb so that they can be reused from various test files.
Add app, main_app, and middleware_options methods to spec_helper.rb so that they can be reused from
various test files.

Enclose the definition of mock_app within a shared_context block so that we can have different
mock_app methods for different middleware test files.
Checking start_with? is simpler than matching a Regexp.
Set the tmpdir to a random, temporary dir in the tests instead of to Dir.tmpdir (which is a fixed
path like '/tmp').

This prevents intermittent test failures like this one that are caused by the file already existing
because it was leftover from the previous test run:

  1) Shrimp::Middleware matching pdf should return 503 the first time
     Failure/Error: last_response.status.should eq 503

       expected: 503
            got: 200
Add matching reader methods to Configuration for each option that already has a writer method.

Rename the misleading variable name @default_options to just @options, because the writer methods
(such as margin=) actually *modify* this hash, so they are not just the default values but rather
the current values.

Replace attr_accessor :default_options with a read-only to_h method for when you need to convert the
Configuration option to a Hash.

Add a Shrimp.config alias for Shrimp.configuration.
Change the default value for the tmpdir option to use mktmpdir (a subdirectory within /tmp like
/tmp/shrimp20131120-28880-1bll5ur) instead of just saving everything directly under /tmp
(Dir.tmpdir).

This way you can easily list or delete all shrimp-generated temp files with something like:

    rm -r /tmp/shrimp*