reimplement blueprint::get_port using the Switch lib, expand example, make port_traits a data struct, add to docs