Linked List improvements

- Renamed List type to LinkedList.
- Map function can generate a list of elements of a different type.
- No more stack overflows.
- More efficient cat function which returns list of the nearest common supertype