Bug 1068664 - Introduce API for downloads in a blocked state with file on disk. r=paolo

This new API allows consumers to call unblock() on the download if
they'd like to allow it. If they'd like to delete the blocked download's
partial data they may call confirmBlock(). Downloads also have a new
hasBlockedData property which will be true if the Download has blocked
data on disk.

DownloadIntegration now also allows for checking if handling downloads
in a blocked state is supported. As platforms support the new operations
on a blocked download they should update their implementation of this
check to keep the blocked download data on disk.

This also moves the reputation checking into the saver so it can happen
before moving the download to its final path - so we don't have possibly
dangerous files sitting around with their intended filename / extension.

If a Download did not use a part file and it fails the reputation check
we will always remove it to prevent dangerous files from existing with
their intended filename.

--HG--
extra : rebase_source : 519e3b4b98c8ccfc00039f35bd32e3143e39a5f8