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.   
@S11001001  Oh good catch I've change it to be right associated and it is *much* faster. Close to the original ListBuffer version.  Thanks for that.