drivers/char/mem: byte generating devices

This patch adds 256 virtual character devices: /dev/byte0, ..., /dev/byte255.
Each works like /dev/zero but generates memory filled with particular byte.

Features:
* handy source of non-zero bytes for 'dd' (dd if=/dev/byte1 ...)
* effective way for allocating poisoned memory (just mmap, without memset)
* voltage level sources for enhanced multi-level pipe-logic circuits (see [1])
* /dev/byte42 is full of stars (*)

Memory filled by default with non-zero bytes might help optimize logic in some
applications. For example (according to Yury Gribov) address sanitizer generates
additional conditional jump for each memory access just to handle default zero
byte as '0x8' without memset`ing it's shadow memory map from the beginning.
In this case allocating memory via mapping /dev/byte8 will reduce size of
instrumented code without memset and wasting memory for unused shadow map.

/dev/byteX devices have the same performance optimizations like /dev/zero.
Shared read-only pages are allocated lazily at the first request and freed by
the memory shrinker (design inspired by huge-zero-page). Private mappings are
organized as normal anonymous mappings with special page-fault handler which
allocates and installs pages like do_anonymous_page() does.

Unlike to /dev/zero shared ro-pages are installed into PTEs as normal pages and
accounted into file-rss: vm_normal_page() allows only zero-page to be installed
as 'special'. 'VM_MIXEDMAP' can handle this but it's not mergeable/mlockable.

This patch also mostly implements effective non-zero-filled shmem/tmpfs files,
(they are used for shared mappings) but here is no interface for the userspace.
This feature mught be exported as ioctl or fcntl call.

Signed-off-by: Konstantin Khlebnikov <koct9i@gmail.com>
Cc: Alexandr Andreev <aandreev@parallels.com> # requested 'dd' source
Cc: Vassili Karpov (malc) <av1474@comtv.ru> # requested poisoned mmap
Cc: Yury Gribov <y.gribov@samsung.com> # shadow map for AddressSanitizer
Link: http://www.linusakesson.net/programming/pipelogic/ [1]
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Hugh Dickins <hughd@google.com>
Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>