fix(carousel): cancel timer on scope destruction

Closes #1414
refactor(carousel): remove duplicate code

Move go function out of restartTimer as it doesn't need to be re-created
during each interval.