This change adds support for isc_txq_select* with simple_tx. Until this change, if a driver provided isc_txq_select*, simple_tx ignored it and picked a tx ring by itself.
Implement driver-provided queue selection in such a way as to inline the bulk of the simple transmit routine, and pre-select wrappers up front that either do normal or pluggable selection via setting the if transmit routine. This allows us to not pay the price of choosing which queue selection to use on every packet sent.
Potential objections are that we run queue selection before detecting if the nic is down. And that we do ALTQ selection in the common code, after queue selection has run. The response is that we are optimizing for performance in the common case (nic is up) and any performance lost to unneeded queue selection for ALTQ is a drop in the bucket of the time lost by using the mutex-locked ifq, which is easily made up for by the improved readability of doing it this way.