Change Conveyor,Planner,Block to use HeapRing
biggish Block queue reshuffle, Planner::recalculate() still has off-by-one errors
Adjst corexy homing speed for diagonal moves to match X or Y moves
Merge remote-tracking branch 'upstream/edge' into upstreamedge
Merge pull request #315 from wolfmanjm/upstreamedge

Adjust corexy homing speed when moving diagonally
Ensure Conveyor::on_block_end gets called last
Big Planner::recalculate rewrite
Merge branch 'edge' into feature/ActionQueue_redux
Merge remote-tracking branch 'upstream/edge' into edge
fix definition of __debugbreak() so if (1) __debugbreak(); else blah(); works as expected
StreamOutput: render to buffer on stack, only invoke new() if stack buffer is too small. Allows printf from ISR context in some cases
HeapRing: add some sanity checks
Conveyor: add some sanity checks
Block: only call Conveyor::on_blocK_end ONCE!
Block: don't update trapezoids, and return correct exit speed if block is currently executing
Conveyor: actually implement planner_queue_size config option
Conveyor: when we append_gcode with empty queue, don't skip the queue: push to block, then execute the block
Block: if no-one takes our block, release immediately
Conveyor: if someone appends gcode while the queue is empty, ensure it gets executed in a timely fashion
Block: handle both multiple takes and no takes properly