Make cons implementation more efficient
Subdivide the ImmutableList interface into 3
Refactor test
Move common methods in the interface as default