tracking pull request - Ephemeral messages

Adding ephemeral messages.

Okay the first change is that now there are two types of messages, but they both need to be signed.
to do that I have changed how encoding works. they way messages where encoded before there was a special case for unsigned messages. but now there is a Signed type that wraps any type (although only Message and Ephemeral types need to be signed of course)

now there is an internal value and a wrapper. 
``` js
var encoded = codec.encode({
  value: message, signature: sig
})
```
I also performed some hacks so that it moves the signature back onto the message object.
this is pretty ugly, but it saves having to rewrite all the code to be `msg.value.author` for example.
this should be addressed before we finalize the encoding.

@nathan7

Adding ephemeral messages is next.