Chalk SDK

The Chalk SDK is in development. Basically, plugins and extensions should
not include anything from chalk/core, but only the headers from chalk/sdk.

Problem: creating new paint devices, layers and images. You cannot, obviously,
instantiate an interface, and we should not, equally obvious, code against 
implementations. The solution is a factory class that is made available to
the plugin when it is created -- i.e, the parent class of a plugin should
implement the various factory interfaces for paint devices, images and layers.
