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.   
If we think that NonEmptyList should have foreach, I'm thinking we should probably add a foreach to IList as well?