Removed concept of pixels/subpixels. That should be handled at a higher level in the system -- and this means we can use an id for a channel end-to-end. Additionally, pixels are now set by ID rather than all at once. This code is untested