This is not ass efficient since `texImage2D` is called now in the constructor.  Perhaps we should remove this function from `Context` and allow the `Texture` constructor to take new `source`?