Remove System.List.{head_left,head_right,tail_left,tail_right}

Maybe these properties will make more sense later
General code cleanup
Implement System.Integer.@.==
Implement System.List.@.length
Rename System.List.@.inject System.List.@.fold
Implement System.List.+ to add two lists together

Also implement System.List.@.+ for convenience
Move System.List.@.fold to System.List.fold, then delegate System.List.@.fold to System.List.fold

Also remove System.List.@.next as its usefulness is dubious at best
Implement System.List.map and System.List.@.map
Remove invalid System.List.@.join (to be replaced later)
Refactor System.List implementation