Basic start of planner code loading depositions

The directory defined in PLATE_PATH contains a file generated from
auterus-verge in deposition mode for each object that exists on the print
bed.
Add basic plotting to SVG

The makes development of the planner easier as everything can be visually
debugged.
Introduce argument parsing and make writing SVG optional
Exit with non-zero status on error condition

The codes will be as follows:
0 - Able to print as is.
1 - Able to print shifted.
2 - Unable to print.
Implement Deposition.from_str() method

Need this when using austerus-verge as a subprocess.
Split Deposition class into several subclasses

The base class is Region.

Deposition is still used for depositions on the plate but new classes are
introduced for new print head movements etc. These need to take the safe
working bounds of the head into account, this will be implemented later.
Use alpha to make all Regions transparent

This makes the planner SVG easier to understand.
Be less verbose by default
Add some comments
Move Z safe height calculation to be with collision detection

Cosmetic change, just keep all the processing together.
Stricter reading of deposition files
Implement Region '&' operator method

True when two regions overlap.
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.