Return a pointer from NewMessage to store it easier.

This changes allows to store the generated messages in something like ```map[uint64]*soymsg.Message``` without the hassle of a temporary variable. For example we can now do this:

```go
cache := map[uint64]*soymsg.Message{}
cache[message.ID] = soymsg.NewMessage(message.ID, message.Value)
```

instead of this:

```go
cache := map[uint64]*soymsg.Message{}
m := soymsg.NewMessage(message.ID, message.Value)
cache[message.ID] = &m
```