Add peer-to-peer example

This is a server/client pair that shows how to use peer-to-peer
connections. You can also verify the server with gdbus like:

 gdbus call -a unix:path=./socket -o /com/github/guelfey/Demo/PeerServer -m com.github.guelfey.PeerServer.Foo 42
diff --git a/_examples/peer-client.go b/_examples/peer-client.go
new file mode 100644
index 0000000..165b740
--- /dev/null
+++ b/_examples/peer-client.go
@@ -0,0 +1,24 @@
+package main
+
+import (
+	"fmt"
+	"github.com/guelfey/go.dbus"
+)
+
+func main() {
+	conn, err := dbus.Dial("unix:path=./socket")
+	if err != nil {
+		panic(err)
+	}
+	fmt.Println("Connected on unix:path=./socket")
+
+	err = conn.Auth(nil)
+	if err != nil {
+		panic(err)
+	}
+
+	obj := conn.Object("", "/com/github/guelfey/Demo/PeerServer")
+	var r string
+	err = obj.Call("com.github.guelfey.PeerServer.Foo", 0, int32(42)).Store(&r)
+	fmt.Printf("Got reply: %s\n", r)
+}
diff --git a/_examples/peer-server.go b/_examples/peer-server.go
new file mode 100644
index 0000000..4902e4a
--- /dev/null
+++ b/_examples/peer-server.go
@@ -0,0 +1,53 @@
+package main
+
+import (
+	"fmt"
+	"github.com/guelfey/go.dbus"
+	"github.com/guelfey/go.dbus/introspect"
+	"os"
+)
+
+const intro = `
+<node>
+	<interface name="com.github.guelfey.PeerServer">
+		<method name="Foo">
+			<arg direction="in" type="i"/>
+			<arg direction="out" type="s"/>
+		</method>
+	</interface>` + introspect.IntrospectDataString + `</node> `
+
+type foo string
+
+func (f foo) Foo(val int32) (string, *dbus.Error) {
+	s := fmt.Sprintf("%s %d", f, val)
+	fmt.Println(s)
+	return s, nil
+}
+
+type handler struct {
+	f foo
+}
+
+func (h handler) GotConnection(server dbus.Server, conn *dbus.Conn) {
+	conn.Export(h.f, "/com/github/guelfey/Demo/PeerServer", "com.github.guelfey.PeerServer")
+	conn.Export(introspect.Introspectable(intro), "/com/github/guelfey/Demo/PeerServer",
+		"org.freedesktop.DBus.Introspectable")
+	if err := conn.ServerAuth(nil, server.Uuid()); err != nil {
+		panic(err)
+	}
+}
+
+func main() {
+	err := os.Remove("socket")
+	if err != nil && !os.IsNotExist(err) {
+		panic(err)
+	}
+	server, err := dbus.NewServer("unix:path=./socket", "1234567890123456")
+	if err != nil {
+		panic(err)
+	}
+	fmt.Println("Listening on unix:path=./socket")
+
+	h := handler{foo("Bar!")}
+	dbus.Serve(server, h)
+}