Implement client negotiation

Separate out protocol header code into libsplice, and implement a simple
negotiation protocol for the client
Correct definition of auth_file_secret

auth_file_secret now correctly accepts a TcpStream to authenticate. File
secret authentication, however, remains unimplemented.
Update to Rust master