Let's cleanup all the branches before calling `initialize`.  Why not just call it every time and rely on its `shader._program` check?  This will have no performance impact.

I expect more changes here later as we try to take advantage of async shader compiling and linking, depending on how/when WebGL in workers comes.