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
update README based on my experiences
Create ScreenshotsController

Merge bits from Home and Dynamic.  Delete DynamicController and
associated stuff.
add test stubs for no reason
Move `final_url` from Port to Screenshot

This duplicates some view code between ports and screenshots.
The port view indexes on ports and shows the first screenshot,
but the screenshot view shows every screenshot.
Allow choosing distinct/not for screenshots

Perhaps there's better UI possible. We sort the screenshots by hash
when showing all, so identical ones appear next to each other.

Could be nice to have a collapsed view with one row per distinct
screenshot, but which shows all the ports that lead there.
encode final URL in phantomjs
add method to find all ips with same screenshot
show all ips when grouping by screenshot