Made docstrings much clearer and made pattern matches exhaustive. Using NonEmptyList to make clear these Lists mustn't be Nil.
/cc @jbeemster