add "trap" computation expression

```fsharp
let! e = trap { f () }
```

これは以下のコードとほぼ同じです。

```fsharp
let! e =
  try
    f () |> ignore
    failure "..."
  with
    e -> success e
```

この記法によって、例外のテストはよりシンプルになりますが、特殊な記法は導入しすぎると学習コストも上がるため慎重になるべきだと考えています。
PersimmonのAPI設計をどうするかにかかわることになりますが、

* 提供する機能はできる限りシンプルに保ち、特殊な記法を導入しなければ実現できないものにのみ特殊な記法を許す
* どの機能を使うかはユーザの裁量に任せ、特殊な記法もそれが便利であれば提供する
* Persimmon本体はシンプルに保ち、ライブラリという形で特殊な記法を提供する
* それ以外の方針

のうち、どれを取りましょう？