Use passive event listeners
Use passive event listeners

To maximize performance, I think it would be a good idea to use passive
event listeners by default. If there are folks who want to cancel the
scroll event, we could provide a prop to allow these to opt in to active
event listeners, but my hunch is that isn't a likely use-case for
Waypoint so I decided to not add that complexity at this time. We can
add in that prop as a minor change if it turns out it is needed.

More information:

  https://blog.chromium.org/2016/05/new-apis-to-help-developers-improve.html

Note that this is a breaking change, but I think it is unlikely to
actually break people.

Since not all browsers support passive events, and they treat the third
argument as the boolean true for `useCapture`, we need to be careful
about when we enable this option. I brought in some code from Modernizr
to do the feature detection for this. It might be nice to have a small
package that we can depend on to do this instead of copying the code in
here, but I didn't find one and I think that the small amount of code
required to do this is okay for now. This might be a good thing to
refactor out in a future iteration.

Fixes #122

brigade/react-waypoint,brigade/react-waypoint