Refactoring of GLIR queues: 1 on canvas and 1 on context

All objects that can be shared accross canvases push their
commands to the context queue. All other commands go into
the canvas queue.

Also gloo objects start out with a temporary private queue,
which gets replaced when they are associated with a canvas.
This happens when on Program.draw and FrameBuffer.activate.
GLIR queues: tests and fixes
fix _associate_canvas on DataBufferView
context reflects more closely what a context means. WIP
better context
fixes and tests
flake
glir queues: fixes and queues on GLObjects are now proxy queues
small fixes
arg fix test
Refactor glir queues (again)

So now there is a queue on each program, which is kept there.
The queue can be associated with other queues, creating a sort
of tree. This also got rid of the need for a shared queue.
fixes and cleaning
Added shared context example
Merge pull request #9 from lcampagn/glir-queues

Added shared context example
address review comments
fix shared context example
note in example
fix typo
wx reuse config if shared context
canvas(config, shared)