Add a general cache to Context.

It's a property bag that can be used to store arbitrary Context-tied
objects and guarantee that they are destroyed (if necessary) when the
Context is destroyed.  This is a cleaner alternative in many cases to
local property
bags indexed on the Context's ID.
Use Context cache to store 1 pixel water masks.

Also fix a typo in ViewportQuad.
Merge branch 'contextObjectCache' into oneTexturePerLayer

Conflicts:
	Source/Scene/ViewportQuad.js