Reland "Split the frame tree logic out of HistoryItem".

This patch introduces HistoryEntry, which is basically a wrapper around
a tree of HistoryNodes. HistoryNode contains a HistoryItem (which
stores the relevant data for the frame) and a vector of child
HistoryNodes. Multiple HistoryNodes can hold references to the same
HistoryItem. HistoryEntry/HistoryNode have logic for doing a parital
clone of themselves while replacing the navigated item.

HistoryEntry keeps 2 maps. One maps frame ids (which are new) to
HistoryNodes, the other maps FrameTree::uniqueName() to HistoryNodes. The
frame id maps is sufficient for the vast majority of cases, but a secondary
mechanism for finding a HistoryNode is necessary when doing a back/forward
navigation with iframes, as child iframes may want to load from history, but
the HistoryEntry may not know about the new Frame object yet.

HistoryController know lives in Page, though for simplicity I left a helper
on FrameLoader that gets the Page's HistoryController.

This patch doesn't plumb the new data model all the way out, so
HistoryController retains a mechanic for converting between the old
HistoryItem child tree and the HistoryEntry tree.

BUG=

Review URL: https://codereview.chromium.org/67913003

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