Implement smooth scroll

The scroll code is ported from Firefox, so it inherits a behavior from this browser.
We need the way to pass event origin and "instant" flag to `render.scrollToX/Y` : 
We must disable smooth scroll for native scrollbars, mouse selection and drag scroll.

If we don't need origin-specific options and duration max/min values we can get rid of `initDuration` function
Configurable values. `this.intervalRatio` is also configurable.