beacons: test beacons, stop segfaulting on beacons, also support valgrind

* Add test that we handle beacons.
* Fix a segfault in handling beacons.
 * This required switching NgxRequestContext to take an ngx_http_request_t
   instead of a ps_request_ctx.
* Support running tests under valgrind:

    USE_VALGRIND=true test/nginx_pagespeed_test.sh ...

But: we don't set a Content-Length header on our `204 No Content` response,
which makes wget wait for 60s to time it out.  Compare:

    wget --save-headers -O - http://localhost:8050/ngx_pagespeed_beacon
    curl -D- http://localhost:8050/ngx_pagespeed_beacon

The headers we send are:

    HTTP/1.1 204 No Content
    Server: nginx/1.2.4
    Date: Tue, 02 Apr 2013 21:07:02 GMT
    Connection: keep-alive

While Apache sends:

    HTTP/1.1 204 No Content
    Date: Tue, 02 Apr 2013 21:07:43 GMT
    Server: Apache/2.2.3 (CentOS)
    Content-Length: 0
    Content-Type: text/plain; charset=UTF-8

I can't get nginx to send a content length.  I've tried manually doing the
opposite of ngx_http_clear_content_length but that didn't work.  Asking on
nginx-devel I got:

    Adding a Content-Length will be inconsistent with RFC2616:

       The 204 response MUST NOT include a message-body, and thus is always
       terminated by the first empty line after the header fields.

I've reported a bug to wget.  For now we can just pass wget `-t 1 --timeout=1`.