Added a an in-process pubsub implementation

This branch is not complete, nodes can't pass messages between them yet (pubsub only works within the same node), but I wanted to get this out the door so we can discuss it.