ENYO-431: Run detectAlignment when content changes, only when generated.

### Issue
When attempting to fix BHV-16192 via https://github.com/enyojs/moonstone/pull/1726, we introduced a situation where the `detectAlignment` method is run before the control is rendered, which results in a `_marquee_distance` of 0 being calculated and cached. Because `moon.Marquee` does not recalculate the distance to marquee if the distance has already been computed, this resulted in some controls not marqueeing (this did not affect controls whose alignment we determined needed to be set, which caused an invalidation of the `_marquee_distance` value).

### Fix
We guard the calling of `detectAlignment` such that it only runs in `contentChanged` when the control is rendered. Additionally, we also execute the full `_marquee_invalidateMetrics` method when alignment changes, to handle cases where we've previously determined the marquee fits but the alignment has changed.

Enyo-DCO-1.1-Signed-off-by: Aaron Tam <aaron.tam@lge.com>