Here's a screenshot from the Component Testgame, which illustrates this mixing, using
components (of the Water subclass):
As the testgame shows, it's simple to introduce a separate LiquidComponent subclass for poisons, or a magic potion, or an energy drink, or whatever special handling is needed.
The module keeps track of all components and the amounts automatically, calling the components' consume method when an actor drinks (possibly only a part of) the liquid, which the components are in.
However, this doesn't always have to be the case. Remember, Liquids are the game world objects, while LiquidComponents are indistinguishable to the player. The player can't see that a liquid contains three centiliters of poison, for instance. He might notice an odd odor from the liquid, but that again is a property of the liquid.
If the player pour oil into water, the two Liquids does not mix. They make contact, but they stay as separate objects. The player can examine the oil, or examine the water.