'browser-modules' can now always handle mixed define-time/use-time circular references, regardless of whether the first node to be required has a define-time or use-time dependency. We do this by throwing an exception and backing out of the circle, but recording which nodes in the circle have use-time dependencies, so we can later require one of these nodes separately, before attempting the original require again.

The tests were all cleaned up and simplified as part of this work.