Change DList's underlying data structure from List to IList.

Since scalaz has IList, it seems to be a better choice than the standard library List for DList's underlying data structure.  Using the original foldRight and map methods were causing OOM with IList however so I moved to something more suitable for how IList works (no OOM or SO now). 


```scala
def apply[A](xs: A*): DList[A] = fromIList(IList(xs: _*))
```