MaterialSnapshot: Interpolate MaterialVariant layer states at update time

Moved the interpolation of MaterialVariant layer state values from
it's ticker to MaterialSnapshot::update() as interpolation of these
values need not be performed each tic.

Also began to restructuring the logic in preparation for the next
phase of refactorings.