Restrict exported names in import *

To create the workflow DSL, we use "from package import *"
This pollutes the namespace with names internal to each module. To stop
problems, explicitly enumerate the names to be exported
Change complex types to use [] instead of (). Hello Scala!

Use List[String] instead of List(String). This differentiates the
type info, and also frees up the call protocol for adding annotations.
Allow port types to be called to set annotations