Formalize the built-in queuing strategies

In doing so, made the highWaterMark stored in an internal slot, instead of a public property. Since nobody actually uses or inspects queuing strategy objects, it wasn't actually useful; additionally, this allows us to protect our invariants better.

Part of #228