lwt.ml: be explicit about public/internal casts
lwt.ml: be explicit about public/internal casts

All places where a public promise/resolver is converted to an internal
one are now explicitly marked by calls to to_internal_promise and
to_internal_resolver, respectively.

This is to support a future commit, which will add (elimination of)
existential type variables at these points. That mechanism encodes, in
type parameters, the "unknown" state of promises and resolvers that
have been passed to lwt.ml functions by the user.

Lists of public promises are not converted, because the promises in a
list generally don't have the same state, and thus shouldn't have
uniform types for the type parameters encoding promise state.

c-cube/lwt,rneswold/lwt,rneswold/lwt,c-cube/lwt,ocsigen/lwt,ocsigen/lwt,ocsigen/lwt,c-cube/lwt,rneswold/lwt