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":""}
-->

This function could use some documentation to explain how and why its used. Would also be good to note that module is compared by address rather than value and that claim calls can next within the same module.