#25 Use atomic method of changing water and solution volume only when both values are changing, otherwise notification may not happen.
Also add check for zero volume in Solution.drain, so that we're not doing unnecessary work every frame.