A bunch of cleanups to get us a nice I/O submission path.
Changes since V2:
- really address the comments from Bart
- address another comment from Bart
Changes since V1:
- rebase on top of the recent blk_mq_try_issue_directly changes
- incorporate comments from Bart