Notes:
This is a chart of the various switches that I am talking about being able to flip, and the applications that result.
With UML in the kernel, we have the various sorts of jailing, just as limited memory pools, partitioned CPUs, another chroot implementation, and a separate in-kernel network node. With a full UML loaded into the host kernel, you get full jailing of all resources, and a full virtual machine running inside the host kernel.
In userspace, you can run UML standalone or embedded in another application. A full UML is a captive UML with the capabilities I described in the evolution example. You can also embed subsystems, in which case you provide the application with the capabilities of the subsystem. The VM system provides a memory allocator with interesting properties. The scheduler would make a threads library. The network stack would make the application is separate network node, allowing it to participate on the network as a peer with the physical machines on the net. A full, standalone UML is the current, standard UML. I haven't talked about isolated, userspace subsystems, so I don't have these filled in, but I can see applications here, as well.