Image layers now load completely before successive layers are drawn, in addition to other improvements

- Shapes masked by another shape will no longer be clickable outside of
the masked region (this is the correct behavior)
- The drawLayers() method now automatically restores any masks that
haven't already been restored
- Fixed a bug in which the setPixels() method would manipulate the
entire canvas even if the a custom width or height was set