Change semantics of keepWhen/dropWhen.

They no longer propagate the right Signal when the left Signal
changes.
Uncomplicate keepWhen implementation
Remove old JS dropWhen/keepWhen
maxsnew's changes pulled in
Merge branch 'keepWhen' of git://github.com/maxsnew/Elm into keepWhen