support the test to fail by exn
remove lazy
cover all cases
rename cases of AssertionResult<'T> DU

"Success" and "Failure" are too general.
The name of "Passed" and "Failed" is more focused on the testing.

related to: issue #7
Merge pull request #30 from pocketberserker/support-exn

Support exn