Add IList, List and ListByArray template classes.
Add 3 classes: IList, List, and ListByArray.
List and ListByArray implement the IList interface.
It somewhat resambles the adapter pattern.
List uses ListByArray. ListByArray is a "implementation" of List.
If I found another "implementation", I can create another class,
say ListByVector, implementing the IList interface,
and replace ListByArray in List with the new class,
and I'll got a whole new version of List
without needs to change any code else where in the project,
because every code uses List, not the real implementation ListByArray.