A theory-informed framework for designing software to support reasoning about causation in history