Contract-Based Reasoning for Component Systems with Rich Interactions