Transform nodes

Completely redesign how transforms work. Transforms are now performed by separate transform nodes, rather than on effect/source/target nodes. Transforms are plugins that specify properties and methods and use the set values to calculate a 4x4 transformation matrix.

Transforms are efficient in that they merely re-calculate the matrix and do not actually render anything unless the target nodes are not "in place" effects and therefore require it. Even then, they can be chained so only the last transform node does any rendering.

All dimension properties are now in pixel space, rather than a fraction of each dimension. This gives finer control and helps keep aspect ratios in order. Node dimensions are now all determined explicitly by the source nodes, though an effect plugin (e.g. 'blend') can modify its output size.

So far, included transform plugins are '2d' and 'flip'.

Additional/related updates:
- Updated all packaged plugins to take advantage of new transforms
- Simplified base shader code
- FrameBuffer can now use an existing texture
- Blend node adds `sizeMode` property to determine how it gets its dimensions from the source nodes
- All old transform methods have been removed, including `reset`
- Fixed aliases
- Stopped creating a new draw function for every draw call
- Effect plugins can define an `update` callback for each input