Used FSharpx.Core instead of Result<'TSuccess, 'TFailure> – refactored a nested pattern matching

Related to #6, and more specifically to this [comment](https://github.com/GreanTech/Qaiain/issues/6#issuecomment-51312114).

This Pull Request replaces the custom `Result<'TSuccess, 'TFailure>` type with the built-in `Choice<'T1, 'T2>` – the monadic type of the [`choose`](https://github.com/fsprojects/fsharpx/blob/9ad7ff3024b1cc90fd252520272421920c1f4017/src/FSharpx.Core/ComputationExpressions/Monad.fs#L806-809) Computation Expression.

Then it composes the handling of large messages in `handle` function using that Computation Expression, so we can avoid the nested pattern matching.

-----

As [FSharpx.Core](https://www.nuget.org/packages/FSharpx.Core/) has been included in source control, the entire diff is big – essentially there are 2 files to look at: *Program.fs* and *MailTests.fs*.

Indeed...

I think, we can do something like this:
```
[<AutoOpen>]
module Result = 
    let success a = Choice<'T1, 'T2>.Choice1Of2 a
    let failure e = Choice<'T1, 'T2>.Choice2Of2 e

...

let rec handle (getMessage) (deleteMessage) (sendEmail) msg =
    match msg |> parse with
    | EmailMessage.EmailData mail ->
        mail |> sendEmail |> success
    | EmailMessage.EmailReference ref ->
        choose {
            let! message = ref.DataAddress |> getMessage
            do! message |> handle getMessage deleteMessage sendEmail
            do! ref.DataAddress |> deleteMessage }
    | _ -> UnknownMessageType |> failure
```

Or even something like this:

```
let private success a = Choice<'T1, 'T2>.Choice1Of2 a
let private failure e = Choice<'T1, 'T2>.Choice2Of2 e

let rec handle (getMessage) (deleteMessage) (sendEmail) msg =
    match msg |> parse with
    | EmailMessage.EmailData mail ->
        mail |> sendEmail |> success
    | EmailMessage.EmailReference ref ->
        choose {
            let! message = ref.DataAddress |> getMessage
            do! message |> handle getMessage deleteMessage sendEmail
            do! ref.DataAddress |> deleteMessage }
    | _ -> UnknownMessageType |> failure
```

And use the Active Patterns for Pattern Matching.<sup>*</sup>

-----

<sup>*</sup>If we delete the Active Patterns and use the `success` or `failure` values for Pattern Matching, results to an error:

```
Error	1	This value is not a literal and cannot be used in a pattern
```