FIX: Calling `replaceIn` would incorrectly move views from the `hasElement` state to `inDOM`

If you have a `Ember.View` that is currently in the `hasElement` state and called `rerender` on it, it would incorrectly transition the state to `inDOM`.

This patch respects the initial state of the view when `rerender` is called and puts it back in that state once rendering completes. It also includes additional tests to ensure things stay in the states they should.