Add ability to define a 'canDownload()' method on a custom extension of File

- Abstracts the permission checking work into SecureFileController::canDownloadFile()
for clarity of the handleRequest() method.
- Fixes bug where the permissionFailure call fails because $this->response wasn't set
correctly.
- Adds ability to create a File extension with a canDownload() method which will be used
over the canView() extension method if it exists. If it doesn't exist, it will fall back
to using canView().