Make 'fail' better behaved for pattern match failure.

In particular, this makes `-XMonadComprehensions` work much nicelier:

```
{-# LANGUAGE MonadComprehensions #-}
catMaybes :: Vector (Maybe a) -> Vector a
catMaybes xs = [x | Just x <- xs]
```