Fix SI-8938: Future is not completed with anything if it throws InterruptedException

Last week, I decided to pick an arbitrary Scala bug and fix it, so I could gain some real experience with the language, while producing something that I wasn't going to throw away after. I wasn't sure how far I'd get, so I didn't bring this up on the mailing list or bug before working on it (sorry!). However, I now have a fix for this issue, as well as fixes for a gap in the tests that allowed the bug to remain unnoticed. I developed on the 2.11.x branch, because that happened to be where Scala's HEAD reference points to.

The hacker guide includes the following quote:
> Keeping Scala’s git history clean is also important. Therefore we won’t accept pull requests for bug fixes that have more than one commit.

This pull request currently has two commits, which I've kept separate because I think there's a case for doing that. If the reviewer disagrees, I can squash the changes, put the other commit in its own PR, or omit the second change, to bring the PR into compliance.

While preparing to submit the pull request, I looked at the 2.12.x branch. It looks like the bug affects that branch as well, and I'm in the process of porting the fix to it.
@sruggier Since you are submitting a PR for SI-8938, you should only deal with `InterruptedException`, and not other exception types.

Completing the promise with the exception before rethrowing may be possible, but as Viktor points out, this change breaks things. It should therefore be discussed on the mailing list.

A solution to appease the `InterruptedException` use-case from SI-8938 would be to have the `blocking` method catch and wrap `InterruptedException`s into something else before rethrowing them. That could also allow a reasonable deprecation cycle.