DisMech: A Discrete Differential Geometry-based Physical Simulator for Soft Robots and Structures