Undefined as first value of Observable.skipDuplicates() is skipped

When using skipDuplicates, `undefined` is used to mark initial previous value of streams. This works fine unless `undefined` is actually emitted to stream.

```coffee-script
Bacon.once(undefined).skipDuplicates()
# => expected: undefined, result: no events
```

This PR also causes the first comparison to be skipped when custom isEqual function is used, which changes the semantics slightly, but can be useful if your comparison function looks like

```coffee-script
(a, b) -> a.x == b.x
```