FTP List, Open, Read, Terminate commands working end to end with QGC

In combination with this pull: https://github.com/mavlink/qgroundcontrol/pull/733, all of this now works end to end. 

Fixed various bugs. Ran into a bunch of problems with Session handling. I flattened Mavlink::Session class while fixing bugs in this area to make it easier to understand.

Note the significant change in _mavlink_main.cpp where it uses mavlink_resend_uart to send the messages out on the wire from the ring buffer. Previous code was causing bad data to be sent on the wire. Also hardcore review of the mutex changes (also in mavlink_ftp.h) would be helpful.