Rework to usart code to allow claiming of ports

This is for discussion rather than a request to be merged.

A 'None' option is provided for uart protocol which will just disable any sending on that port.  The port will still receive SBP unless claimed by a driver.
Future drivers for Bluetooth and GPRS/3G must claim their configured port, this will prevent SBP from eating the received data.  If initialization fails, the port must be released so that it can be reconfigured by SBP if needed.

If the usart_tx_state and usart_rx_state are merged, usart_chat could be simplified.  The 'None' protocol option can also be removed, as sending from the existing protocol drivers could be disabled when the port is claimed.


<!---
@huboard:{"order":29.25,"milestone_order":75,"custom_state":""}
-->

Perhaps copy the old doc string over to this function.