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)
With arguments that make sense specifying as a number (like div, being 1, 2 or 4), I'm going with the rule that these arguments should use an direct integer instead of a pre-defined constant.  See eg uart.init, the bits, stop and parity args.  Applied to the case here, it would mean that div can take any integer, and it's turned into the correct constant in the init function (eg `ClockDivision=vals[4].u_int == 1 ? TIM_CLOCKDIVISION_DIV1 : (vals[4].u_int == 2 ? TIM_CLOCKDIVISION_DIV2 : TIM_CLOCKDIVISION_DIV4)`).  Advantages are: 1) much easier for user to type `1` than `pyb.Timer.COUNTER_DIV_1`; 2) shorter code so easier to read, and still self documenting (it's obvious what div=2 does); 3) generalises easily to other clock division values; 4) uses less ROM since don't need all the qstrs for the constants, nor the entries in the class global table (the code to convert 1,2,4 to the right constant will be a lot less than the qstr data).  The disadvantage is that the user can put in any value of the clock div, but they should anyway read the docs to see what values are valid.