ENH: Fix module history to keep most recent selected module last

The current implementation is a dysfunctional mix between
a "module history navigator" and "fixed workflow navigator".

This commit implements "module history navigator" behavior,
which is useful for generic Slicer use.

A "fixed workflow navigator" is a very special case, it is only
applicable when all the modules are part of the workflow,
there are no loops, skipping of steps, auxiliary modules, etc.

Considering the following convention, the update is illustrated
below.

Legend:

  -> X : Go to module X
  P    : List of module in the "previous stack"
  N    : List of module in the "next stack"

Current behaviour:

   A     P: -    |  N: -
-> B     P: A    |  N: -
-> C     P: BA   |  N: -
-> D     P: CBA  |  N: -
-> A     P: -    |  N: BCD
-> E     P: A    |  N: -

After integrating this commit, the behaviour is then:

   A     P: -    |  N: -
-> B     P: A    |  N: -
-> C     P: BA   |  N: -
-> D     P: CBA  |  N: -
-> A     P: DCB  |  N: -
-> E     P: ADCB |  N: -

where

A: Welcome module
B: Annotations
C: Data
D: DataStore
E: SampleData

Fixes #3533

From: Andras Lasso <lasso@queensu.ca>

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22791 3bd1e089-480b-0410-8dfb-8563597acbee