Package p2p (PoC7)

Here we go. That took a bit longer than expected.
The tests could be better, but we can improve them while integrating PoC 8 changes.

@zelig PTAL
This is still part of #155.
Suggestion
```go
type ErrorCode int
var errorCodeToString = []string{
  "Error 1", "Error 2", "etc",
}
func (self ErrorCode) String() string {
    if len(errorCodeToString) <= int(self) {
        // Could panic here, you seem to be panicing on a few lines below. Why?
        return "Invalid error code"
    }
    return errorCodeToString[int(self)]
}
```

See http://play.golang.org/p/x7qvoQlOl1