Implement plShaderAssembler

The history on the old branch referenced in https://github.com/H-uru/Plasma/pull/316 was so screwy that it was easier just to rebase everything locally and push to a new branch here on github.