Fix (list-copy) for non-lists and simplify

After (list-copy) was updated to handle improper lists its logic became
pretty convoluted. It also didn't correctly handle non-list objects as
per R7RS. Simplify the logic, handle non-lists and add a unit test.