From the Nov2017 sprint.
For nodes, we can make a node with "type", but this returns a node object. This is a bit of a problem for a situation where you do `doc.createNode("name", "filterlayer")` or `doc.createNode("name", "clonelayer")`. For the former this lacks the api to actually set a filter, and for the latter, we do really need to give it a layer to clone, because otherwise it is gooblygook(and clone layers cannot be assigned clonereferences after the fact due to rendering compications).
For resources, we have a similar situation, but there it is resolved by making an object that takes a resource and from there derives the resource information. This has proven very cumbersome to use because you end up juggling two versions of the same resource to edit one or the other.
The solution to this is to make seperate classes for the different node-types and resources, have them extend node and resource, and give them seperate creation functions so that api-users can be certain which node they create.
Another issue is that we cannot get colorspace info, like the bytearray, which'd be useful for export functions.
[] Rework nodes
[] Paintlayer api
[] Clonelayer
[] filterlayer
[] grouplayer
[] filllayer
[] filelayer
[] vector layer
[] transparency mask
[] filter mask
[] transform mask
[] selection mask
[] colorizemask
[] rework resources
[] paintoppresets
[] palettes
[] gradients
[] brushes
[] workspaces
[] textures
[] bundles
[] Colorspace info object
[] object
[] replace old stuff in scripts.
[] adjust docs.