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.   
I have a couple ideas that I can benchmark, though I wasn't sure if I should include performance changes into a big refactor like this.