Make the partition page size dynamic.

For a given bucket, the bucket's page size can now be less than the standard
partition page size. This enables us to pick a per-bucket page size that
minimizes "waste" due to poor tesselation.

To minimize disturbance, this first iteration considers only two possibilities
for each bucket:
- Normal partition page size (currently 16kB)
- One sub page less (12kB)

A future CL will increase the range of possibilities by making the normal
partition page size much bigger. This CL is more about adding the framework.

To give a concrete example, the 640-byte bucket currently has 25 slots. This
leads to a 384 byte, or 2.34% waste at the end of the bucket. With this change,
we calculate that 3 sub pages is better than a full partition page, leading to
19 slots and a 128 byte, or 1.04% waste.

To put this in context, tcmalloc tolerates up to a 12.5% waste in a given size
class, although its average is obviously better. Once we have this CL and we
bump up the partition page size, we'll be much more efficient with waste than
tcmalloc, at the cost of a little unused but reserved address space.

R=tsepez@chromium.org

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

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