Moving NonEmptyList to be backed by IList instead of List

This is a big change, so I'm expecting this one may be controversial.  I've made NEL invariant and had to change the way we are flatMapping so there may be slight performance regression.   
Hmm I can see why you left your comment about flatMap performance. Anyone have any good ideas here? I have a couple but I don't like any of them.