Exercise 3 done
Exercise 4 done
Fix pattern matching in ex 4
The first version had the third and fourth line swapped. What I didn't realize is that naming the pattern would cause it to accept either a MessageTree or a Leaf! Moved the Leaf pattern earlier so it'd catch.
Fixed getRest function:

Initially, the function would get `head (drop x (words str))` which only pulled the first word. That's not right! Changing it to `unwords (drop x (words str))` makes it behave as expected.
Exercise 5 done