libnvdimm for 4.9

* PMEM sub-division support: Allow a single PMEM region to be divided
  into multiple namespaces. Originally, ~2 years ago, it was thought that
  partitions of a /dev/pmemX block device could handle sub-allocations of
  persistent memory for different use cases. With the decision to not
  support DAX mappings of raw block-devices, and the genesis of
  device-dax, the need for having multiple pmem-namespace per region has
  grown.

* Device-DAX unified inode: In support of dynamic-resizing of a
  device-dax instance the kernel arranges for all mappings of a
  device-dax node to share the same inode. This allows unmap / truncate /
  invalidation events to affect all instances of the device similar to the
  behavior of mmap on block devices.

* Hardware error scrubbing reworks: The original address-range-scrub +
  badblocks tracking solution allowed clearing entries at the individual
  namespace level, but it failed to clear the internal list of media
  errors maintained at the bus level. The result was that the next scrub
  or namespace disable/re-enable event would restore the cleared
  badblocks, but now that is fixed. The v4.8 kernel introduced an
  auto-scrub-on-machine-check behavior to repopulate the badblocks list.
  Now, in v4.9, the auto-scrub behavior can be disabled and simply arrange
  for the error reported in the machine-check to be added to the list.

* DIMM health-event notification support: ACPI 6.1 defines a
  notification event code that can be send to ACPI NVDIMM devices. A
  poll(2) capable file descriptor for these events can be obtained from
  the nmemX/nfit/flags sysfs-attribute of a libnvdimm memory device.

* Miscellaneous fixes: NVDIMM-N probe error, device-dax build error, and
  a change to dedup the flush hint list to not flush the memory controller
  more than necessary.