Make LazyInitializedList<E> a List<E>
Restrict LazyInitializedList to the List interface

This way, we can use various types of list at various places without
specifically needing a LazyInitializedList.
Use a standard Callable interface for lazy initialized lists