Cleanup + unify tab/joint handling
Tabs and joints are just different ways of attaching EdgePorts, so should probably be handled accordingly.
- Remove Drawing classes/methods in favor of standard regular Face and HyperEdge types
- Auto-tabify #22
- Cleanup implementation
- Figure out how to represent general design-specified connections vs unique user-specified joining options