Move request_irq() to an internal function which serves request_irq(),
and the newly added request_threaded_irq() and devm_request_threaded_irq().
Likewise factor out parts of free_irq() to also be used with
devm_free_irq().
Add a linux_irq_worker() implementation in case the irq handler in
linux_irq_handler() returns IRQ_WAKE_THREAD to defer further work [1].
Sponsored by: The FreeBSD Foundation
Inspired by: Similar code in a Chelsio driver [1]
MFC after: 10 days