Added a new 'interleaved' ordering group.

This ordering group picks the next allowed call to be any one of its nested groups, so given the following:

with forge.interleaved_order():
    with forge.ordered():
        foo(1)
        foo(2)
    with forge.ordered():
        bar(1)
        bar(2)

These sequences are valid:

foo(1)
bar(1)
foo(2)
bar(2)

or:

bar(1)
bar(2)
foo(1)
foo(2)

but the following isn't:

foo(2) # out of order
foo(1)
bar(1)
bar(2)
Add test for interleaved