Add append to Data.List.NonEmpty
## Motivation
Just as appending together regular lists is a common task, appending non-empty
lists is also a common task. Having functions to do so in the prelude would make
working with non-empty lists much easier and prevent users from re-implementing
the same functions over and over.
## Proposal
I propose adding an `append` function to the `Data.List.NonEmpty`
library. This would include, at minimum, a definition for `NonEmpty a ->
NonEmpty a -> NonEmpty a`. It could also include definitions for `NonEmpty a ->
[a] -> NonEmpty a` and `[a] -> NonEmpty a -> NonEmpty a`.
Here are sample implementations for each case. They currently have very verbose
names because I couldn't think of anything better off the top of my head. I
assume the first would simply be named `append`, but I don't have great ideas
for the second and third.
```haskell
appendNonEmptyNonEmpty :: NonEmpty a -> NonEmpty a -> NonEmpty a
appendNonEmptyNonEmpty (x1 :| xs) ys =
x1 :| xs ++ toList ys
appendNonEmptyRegular :: NonEmpty a -> [a] -> NonEmpty a
appendNonEmptyRegular (x :| xs) ys =
x :| xs ++ ys
appendRegularNonEmpty :: [a] -> NonEmpty a -> NonEmpty a
appendRegularNonEmpty [] ys =
ys
appendRegularNonEmpty (x:xs) ys =
x :| xs ++ toList ys
```
issue