Use a custom file reader service

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

Sorry. It's not an alert, but it's an (red) error message non the lest. User aborting shouldn't result in an error message.