Ensure scrollToAnimated always returns a promise

Previously, if no scroll was necessary, it simply returned (null) before
creating a deferred object. Relying on a promise (with code like
`.scrollToElement(...).then(...)`) could fail.