stm32/f1/can: Add loopback/silent vars to init function.

Also: add helper function for mailbox checking
stm32/f1/dma: add clear_flag helper function
stm32/f1/i2c: add a whole bevy of additional helper functions
stm32/f1/vector: add ability to boot to DFU bootloader

note: Only works on CL devices
also: this could probably use a helper function
stm32/f1/rcc: add 25mhz in to 72mhz out clock tree setup function.

also: added support for previously undefined PLLs
stm32/f1/rtc: add PLL2/3 to switch statement to avoid compiler warning
examples: fix lisa-m-1 can example to use new can init function
stm32/f1/gpio: use |= instead of = when setting up registers
stm32/f1/can: Replace mistaken logical operators with bitwise operators.

also: remove unnecessary parenthesis
stm32/f1/i2c: remove unnecessary parenthesis
stm32/f1/can: Add function to detect if can system has an available mailbox
stm32/f1: Add user_reset_hook to reset_handler w/ jump_to_dfu preset

This allows for pragramatic jumping to the DFU bootloader on CL devices, or
could be used for things like CRC checking of the firmware before boot
stm32/i2c: Add DOXYGEN strings for i2c helper functions.

Also: Define i2c_dutycycle group in i2c header
stm32/can: add 'shift' defines for can timing bits

Useful whe you want to return min/max values of timing parameters
stm32/f1/can: clean up can_available_mailbox ->fewer 'if' statements
stm32/f1/can: Add clearing of can timing bits on init

This corrects a bug introduced with the addition of allowing loopback
and silent parameters in the init function.
stm32/f1/rcc: expose method for selecting MCO source
Enable OTG clock during initialization

Add a call to enable USB clock, otherwise the dive will not enumerate.
Change USB strings handling code

This commit add an extra field to the _usbd_device, that allows to
keep track of the number of USB strings  which allows simplify
boundaries checking code in usb_standard_get_descriptor.

This commit also changes the index base for strings in
usb_standard_get_descriptor which allows to get rid of necessity to
have a dummy one-character string in a strings array.
Add a desig_get_unique_id_as_string

This commit adds desig_get_unique_id_as_string which is useful if one
wants to use device ID as USB serial number(iSerialNumber), for example.