add TestResult type and implement print test name

This commit changes the type of the test computation expr from
`AssertionResult<'T>` to `TestResult<'T>`.
If the type of the right hand side of `let!` is the `TestResult<'T>`,
then the `Source` method gets the value of the `AssertionResult`
property and passes it to the `Bind` method.
So always the type of the left hand side of `let!` is the `'T`.
(`AssertionResult<'T>` is unwrapped in the `Bind` method.)
Now, we can specify both `TestResult<'T>` and `AssertionResult<'T>` at
the place of the right hand side of `let!`.

```fsharp
let! x =
  Success 10 // OK.
             // The type of "Success 10" is AssertionResult<int>.
             // The type of "x" is int.
let! y =
  test "" { return "yes" } // OK.
                           // The type of "test ..." is TestResult<string>.
                           // The type of "y" is string.
```