Avoid adding placeholder when deleting last text in root

Editing code uses placeholders for all manner of different functions including
holding open content editable blocks. When there's no content in the blocks except
text, these placeholders aren't necessary and is confusing Android's IME path.

Android's IME path should probably just be fixed, but in the meantime, this
creates fewer placeholders, which is definitely an improvement.

The previous version of this patch was rolled out due to crashes, see
https://codereview.chromium.org/14969020. This patch adds a check in
cleanupAfterDeletion to ensure we don't remove ancestors of our destination node,
and yosin@ landed another fix in https://codereview.chromium.org/16053005/.

BUG=222806, 236726

Review URL: https://chromiumcodereview.appspot.com/18644008

git-svn-id: svn://svn.chromium.org/blink/trunk@154347 bbb929c8-8fbe-4397-9dbb-9b2b20218538
r153792 regressed navigating again to the same url.

BUG=259992
TEST=WebFrameTest.NavigateToSame

Review URL: https://chromiumcodereview.appspot.com/19388003

git-svn-id: svn://svn.chromium.org/blink/trunk@154348 bbb929c8-8fbe-4397-9dbb-9b2b20218538