stm32_i2c: ensure that unexpected ISR can't overwrite stale data

if we get an ISR leftover from a previous read transfer it could use
stale values for priv->dcnt and priv->ptr to overwrite stack that is
no longer in scope. This resets dcnt and ptr on each new
stm32_i2c_process() call to ensure that any unexpected data bytes are
discarded
stm32: add sw workaround for broken stm32 hw RTS implementation

adds support for manually asserting nRTS when the OS buffer is nearly full
and deasserting it when it has room again.

This makes the RTS pin actually work in a useful way (the stm32 hw
implementation is broken - it asserts nRTS as soon as more than one
character is received).

We assert nRTS from inside of up_recvchars.  For deassertion we needed
a new callback from the general serial device layer when characters
have been dequed.  onrxdeque was added to uart_ops_s for this purpose and
implemented (currently) only on the stm32.
Merge remote-tracking branch 'diydrones/master'