Port metadatas

Our ports so far are very simple: floating-point values, without any more information attached than a name to show to the user.

Most of the time, we'll want to attach some semantic metadata to the ports: for instance, a range of acceptable values, the kind of UI widget that should be shown to the user, etc.