mm: Add functions for file hole deduplication

This patch adds a new file with functions to: deduplicate holes, COW
those deduplicated holes into new pages, and truncate deduplicated
holes.
mm: Add 'will_write' argument to find_get_page()

We need to COW dedup pages when they are about to be written to. Since
all functions in VFS that may write to a page obtain the reference to
the page through find_get_page() or functions that call it, we add an
argument to that function to indicate whether or not the caller intends
to write to the page.

This patch adds the argument, and adds it for all callers.
radix-tree: Add flag for dedup pages

Use the 3rd least significant bit to indicate a dedup entry in the radix
tree. Pointers in the radix tree are at least 8-byte aligned on any
architecture, so this is safe.
mm: Use pagevec ->nr to flag dedup page indices

Truncation relies on the ->index member of struct page to know what
entry to remove from the radix tree. This is a problem for dedup pages,
since they are shared between indices.

To solve this, I note that pagevec's are never larger than PAGEVEC_SIZE,
which is 14. Since the ->nr field is unsigned long, that leaves us more
than enough bits to have a flag for each page in the pagevec.

When find_get_pages() encounters a dedup page, it stores the index of
the page in the ->pages instead of a pointer to it, and indicates this
by setting the appropriate flag bit in ->nr.
mm: Add logic for truncating dedup pages

Check the flag in the ->nr member of struct pagevec, and handle if it's
an dedup page index.
mm: Add logic to COW dedup pages in find_get_page()

Call dedup_do_cow() if it's a dedup page, and the caller specified
MAY_WRITE.
mm: Add support for mmap() of dedup pages

In the MAP_PRIVATE path, simply skip a check against ->mapping. There is
an ext4-specific change here: ext4 uses a pagevec to check for dirtied
pages in the read fault path of a MAP_PRIVATE mapping, and needs to
ignore dedup pages.

In the MAP_SHARED path, simply COW the page, and remap in the new page.
mm: Unduplicate sparse pages

Add logic to de-deplicate file holes in the page cache.

Btrfs is special and defines it's own ->readpage function, so fix that
up as well.