PCI/MSI: Introduce pci_enable_msi/msix_range() interfaces

This update introduces pci_enable_msi_range() function which
supersedes pci_enable_msi() and pci_enable_msi_block()
interfaces for MSI and pci_enable_msi_range() function which
supersedes pci_enable_msix() interface for MSI-X interrupts.

The newly introduced functions return either a negative error
code or a number of successfully allocated MSI/MSI-X interrupts.

Unlike the old interfaces where the "third" state indicates
a possible number of MSI interrupts that could have been
allocated, the new interfaces allow device drivers do not deal
with tri-state return values and hide the fallback logic behind
the implementation.

As result, device drivers are expected to have more clearer
and straight code.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Suggested-by: Ben Hutchings <bhutchings@solarflare.com>
Reviewed-by: Tejun Heo <tj@kernel.org>