improve test coverage; curry prepend and append

i think of `undefined, null, NaN` as the *absence* of a value, and therefore not an atom. The inspiration is from scheme, where `(atom? x)` is true if `x` is neither a pair nor nil. Scheme is much cleaner than javascript, of course.