Chapter 6: Recursive Functions

@laurocaetano and @carlosgaldino here are my solutions for chapter 6. The nice thing is that it matched the chapter 2 of Introduction to Algorithms that presents merge sort. Seeing the Recursive + Pattern Matching solution is beautiful and easy to understand as quicksort.
in the end I think that the version with `null` above is better.

```haskell
msort [] = []
msort [x] = [x]
msort xs = merge (msort left) (msort right)
    where (left, right) = halve xs
```

feels strange, I feel the desire to change to msort xs = xs on the first two pattern matching