Version handshake

addresses #166 
Let's do this instead:

```proto
message Handshake1 {
	// protocolVersion determines compatibility between peers
	optional string protocolVersion = 1; // semver

	// agentVersion is like a UserAgent string in browsers, or client version in bittorrent
	// includes the client name and client. e.g.   "go-ipfs/0.1.0"
	optional string agentVersion = 2; // semver 

	// we'll have more fields here later.
}
```

We dont need protobof to parse semver, it's a well established format, and we can parse it separately. (`go-semver`)