reject FilteredPromise if filterDone fails

WHEN filterDone throws an exception we should reject the promise.
BUT this is not that simple. In order to call reject on FilteredPromise we must
somehow have an F argument when we can only have a D or a Throwable result.
SO, (this is fundamental and) in order to workaround it, we limited how generic
can be Fail*  by removing the generics at all from there and support only Throwables.