Add Layers

Layers are collections of strokes. They are drawn at specific
depths so that one layer can be on top of or under another layer
Remove Stroke Rendering Boilerplate

No need to have Strategy classes when we can just
use functions
Remove Layer Render Boilerplate

No need for the strategy pattern when we have
functions
Define Renderer Types For Clarity

StrokeRenderer and LayerRenderer are type defs for the
corrisponding functions