Support PWM on multiple pins

API suggestions encouraged.

The commit linking `Pin`s back to their `Port` makes the printing of pins way uglier. The PWM frequency could be a global instead of a `Port` property if it had to be, because there's only one port with PWM.
Some of our tm_ and hw_ functions return positive value errors instead of negative (since it's not an overloaded value like `ssize_t`). Which should we standardize on?