Only schedule Close() if err is non-nil

This fixes a nil dereference error
Test pdf files for usability before extracting metadata

cpdf 1.6-1.7 will succeed when extracting pagecount and bookmarks from
an encrypted document, but fail at combination time.  This uses cpdf's
-i flag to read the file in a way that will trigger failure if it's not
combinable.

Also make errors in this area more specific.
BUILDFIX implement new interface method in mocks
Retry notification delivery

We've been seeing intermittent errors when delivering success
notifications -- add a single retry to attempt to reduce these.
gofmt
golint
Loosen scale-down policy

There's no point in killing a fresh server if the load that spawned it
drops off for only 10 minutes.  The threshold should be higher, since
the cost of the server is incurred for a full hour anyway.  Start
dropping servers after 30 minutes of no load, and wait 20 minutes
between scaledown events.