Version 3 of timer: Support PWM, OC, and IC

This is my version 2 (not tested).

I verified it compiles.

It still needs the pin= support added.

It has PWM and OC support (adding IC and Encoder would be striaght forward)
@dpgeorge Originally, counter_mode= was just mode= I changed it when I added mode=PWM/OC/IC

However, now the PWM/OC/IC is actually a TimerChannel attribute, I could rename counter_mode back to mode.

We could also shorten the constants to just UP/DOWN/CENTER so that you use:
```python
counter_mode=Timer.UP
```
or
```python
counter_mode=Timer.COUNTER_UP
```

or if we rename it back to mode
```python
mode=Timer.UP
```
or
```python
mode=Timer.MODE_UP
```

Also, I realized that when you create the channel, mode is really a required argument, but it currently has to specified using a kwarg. So the way I coded it, you would do:
```python
ch3 = t2.channel(3, mode=Timer.PWM, ...)
```
and it should probably be a positional argument:
```python
ch3 = t2.channel(3, Timer.PWM, ...)
```

Also, oc_polarity is either OC_POLARITY_HIGH/LOW. We could change that to being True/False (although ic_polarity still needs RISING/FALLING/BOTH), although that may noot be as clear as the div=1 case.