Certain draw calls were creating/destroying vertex buffers. Every call.
That's kind of not a great thing to do, so instead use the new
gs_draw_quadf() function to optimize rendering and reduce the need for
swapping vertex buffers.
Also uses a shader for DrawStripedLine so it does not have to split it
up into separate draw calls.
If the crop values combined are larger than the width or height of the
source, an integer overflow will occur.
This fix converts the width/height values to int, and then clamps
any negative values to 0.