Add getclksfreq(), wfe(), wfi(), rnd.setup() and rnd.read() functions.

wfe() and wfi() just call the underlying ARM functions.

getclksfreq() returns a table containing these clock frequencies: SYSCLK,
HCLK, PCLK1 and PCLK2.

rnd.setup() initialises the random number generator. rnd.read() will call
this anyway if the RNG hasn't been initialised before you read from it. If
rng.read() ever returns nil to signify a problem, you can call rnd.setup()
to re-initialise the RNG.

rnd.read() returns a 32 bit random number or nil if the generator signals
an error.
Change stm32f4.cpu.rng.read() to return a number rather than an integer.

This ensures the result is always positive when numbers are not 32 integers.
Merge branch 'master' into mb-stm32f4-cpu-additions
Add functions to read STM32F4 MCU id and unique device id.

stm32f4.cpu.read_mcu_device_id() returns a number containing the 32 bit id.

stm32f4.cpu.read_unique_device_id() returns an array of 3 numbers. The first
number contains bits 0-31, the second number contains bits 32-63 and the
last number contains bits 64-95 of the unique device id.
Merge pull request #41 from smartavionics/mb-stm32f4-cpu-additions

Add getclksfreq(), wfe(), wfi(), rnd.setup() and rnd.read() functions.