Previously instances of the IText shape were added to a globally-shared
array when they were created. There are two problems with this approach:
1) Interactions with one canvas affect others. I would never expect
text in one canvas to exit edit mode just because I interacted with
some otherwise-unrelated canvas.
2) Every IText instance leaks. There is no mechanism to clean up references
to IText instances in the global array, so every such instance will
hang around in memory forever, regardless of whether it is removed from
the canvas or if the canvas itself is removed.
Discovered while profiling memory usage in Chrome.