Use a custom file reader service

This is a small refactoring introducing a custom FileReader service using a promise.

I think it makes sense to put this above `$scope.userMessage = $translate('operation_canceled');`. Otherwise, when aborting, a fail message remains. If aborting is done first, the correct 'operation_canceled' message stays.