Implement !, || and && as functions in terms of if, else and return.

This is a really interesting exercise to follow along with - just
how far can we go using just if?
Simplify the implementations of prepend, head and tail.

No more strings, ifs or equality checks, yet we still have lists!

This is the power of lambda...
Make the implementations of lists and empty lists more uniform.

Lists now know whether or not they're the empty list.