Don't share Prerender objects between LinkLoader and Document (via Prerenderer).

This avoids a leak where canceled prerenders are still retained by the
Prerenderer until the page is navigated away. That ownership is maintained so
that the Prerenderer can forward information about the Document being detached
(to trigger Prerender::abandon). Instead, resurrect PrerenderHandle as a
per-Prerender DocumentLifecycleObserver. It is separate from Prerender and
lives in loader/ for layering purposes.

Prerenderer itself now exists only to cache a pointer to the PrerendererClient.
Move the prerender creation logic to PrerenderHandle::create and look up the
PrerendererClient in there. (The cached pointer wasn't saving a lookup;
Prerenderer::from was being called already.)

In addition, re-enable totalCount() checks in PrerenderingTest; those have been
fixed since r157831.

BUG=290197

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

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