Reorganize Ports and Actions

This pull request eliminates some redundancy between the `port` and `action` types in the abstraction layer. As a consequence, the controller port is now an action.