Store the final URL reached by PhantomJS

The result is saved to port.final_url.  Transmitting it from PhantomJS is a
little hacky; the URL is logged first, and then the image, so we can split on
"\n" to separate the two.  Currently this splitting happens in
ScreenshotResults, but it could be done just as easily in ScreenshotWorker.
New IpAddress scope with_ports
detect timed-out scans
allow >64kB nikto results
Summary view in Nate's style
Add control to redo timed-out scans

Also allow configurable timeout for these rescans.  UI needs some work.
List number of live hosts on main page
Collapse identical screenshots

Adds a `data_hash` field to screenshots, and indexes them by it.
Screenshots page now shows each distinct image only once.

Todo: add indicator for multiple instances
      allow listing them
      also collapse by final url?
don't forget timeout field when retrying
detect killed niktos
don't crash when processing light scans
log crashed workers