Fix home timeline jump when navigating back
Summary
Inspired by this MR from Mangane: https://github.com/BDX-town/Mangane/pull/247
Bunch of fixes/refactoring to the ScrollTopButton and the components that render it. It's now placed in a portal and the callbacks are cleaned up, as well as things that prevent too much unnecessary rerendering.
Most importantly, it delays adding the scroll listener until the feed is already rendered (approximately). This fixes jump issues when navigating back to the home feed.