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.   
At the very least, it needs to be a right-fold.