base: Discardable memory types.

This adds a DiscardableMemoryType enum and a function that
can be used to select what type of discardable memory to
use. This is generally useful for debugging purposes and
when evaluating the performance of one implementation vs
another.

The unit test framework for discardable memory is improved
slightly by testing every supported type on each platform
rather then just the one specific type.

Furthermore, it allows us to expose ashmem based
discardable memory on ChromeOS in about:flags before we
make it default.

No change in behavior unless the new
--use-discardable-memory=type switch is used.

BUG=327516
TEST=base_unitttest --gtest_filter=DiscardableMemory*
TBR=tomhudson@google.com

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@243532 0039d316-1c4b-4281-b951-d872f2087c98
[Telemetry] Fix page_cycler for pages with client side redirects.

Page.disable clears all scripts to evaluate on commit. There is no way
to detect client side redirects because linkedin, for example, performs
its client side redirect after the page has fully loaded.

In order for the page_cyclers to work on pages with client side
redirects, the script to evaluate on commit must execute on the
redirected page.

So to workaround this, we avoid ever calling Page.disable. we don't
expect continuing to listen for notifications here to impact
performance, but if we do see any performance reduction on the bots we
should revert and search for another approach.

This is a reland of https://codereview.chromium.org/103373003 fixing failures
on the bots.

BUG=253604
R=pdr@chromium.org
TEST=tools/perf/run_measurement --browser=canary page_cycler tools/perf/page_sets/top_10_mobile.json --pageset-repeat=2

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@243533 0039d316-1c4b-4281-b951-d872f2087c98
SVN changes up to revision 243533