Add configuration parameter MQ_HEADSIZE

Consists of four numbers divided by colons defining the size of the print
head relative to the nozzle in -X, +X, -Y & +Y directions.

e.g.
MQ_HEADSIZE=15:20:18:10
Implement head size aware NewArea Region subclass

Special Region can be expanded using add_head_clearance() to make the
region encompass the whole area head may occupy rather than just the
nozzle tip.
Analyse new print instructions and apply checks

Compare against existing depositions to determine whether print is safe.
Compare existing depositions against safe Z reset area

We must be able to reset the Z axis at X0.0, Y0.0.

If we can't do this due to existing depositions then bail.
Add configuration parameter MQ_PRINTBED

Consists of two numbers divided by colons defining the size of the
print bed X and Y dimensions.

e.g.
MQ_PRINTBED=200:200
Implement Region '<=' comparison method

True when region a is entirely contained within region b.

a <= b = True
Ensure new print fits on the print bed
Fix erroneous Region.__and__() implementation

Now simplified by checking for no overlap and inverting result.
Use MQ_PRINTBED when plotting SVG
Move conflict checking into dedicated function check_conflict()

We will need to run this many more times when we test shifted print
positions.
Finish surface just before exit

This will let us draw the new shifted positions of planned prints.
Introduce start of print replacement

By running the new gcode through austerus-verge again in deposition mode
and adding the head boundaries we have the minimum free area required on
the print bed to do a safe print.

This assumes the gcode gets modified to remain constrained in this space
and all movements outside the designated safe area are above the
calculated safe Z working height.
Trivial removal of blank line
Implement basic shift planning algorithm

Very simple brute force algorithm just starts at home corner of bed and
tries every position in gaps of 5mm along X then Y.

The first available space if used.
Fix erroneous Region.__and__() implementation
Use new ShiftedArea Region subclass to make shift clearer on SVG
Do Z reset check earlier

There is no point trying to shift around Depositions if the Z safe reset
check fails so do this first.
Do not print in Z reset area

While it is valid to print here, it will be the last possible print.

Perhaps another patch can allow this if no other valid shift can be found.
Output the shift values if a shift is needed
Just outline original print position in SVG when we are shifting