zink: break out draw dispatch into separate functions
this is much easier to read and is going to greatly simplify the eventual multidraw implementation which will be dropped in
also it allows moving conditionals outside of loops to very slightly improve drawoverhead performance (with multidraw)