add new list operations

- simplify 'drop'
- implement 'takeWhile'
- implement 'dropWhile'
- implement 'zipWith'