replaceTo and goUp preserve equivalent prefix

When performing a replaceTo(), Flow will now compare the new backstack
against the current backstack.  Starting at the root, it will retain any
screen instances which are equal to the corresponding screen in the new
backstack.  As soon as it encounters a screen which does not equal its
replacement, Flow will abandon preservation and use the newly created
screens.
Merge pull request #28 from square/loganj/replace_keeps_originals

replaceTo and goUp preserve equivalent prefix