Cleanup SNS code

As per the (now-removed) message in `sns.go.`

I've separated this file into several different files:

* message.go - The Message struct, nothing else
* permissions.go - Permission requests + their structs
* subscription.go - Subscription requests + their structs
* topic.go - Topic requests + their structs

I've also fixed up `sns.query` to have a two-argument signature, as it never did anything with the original two arguments (message and topic).

Tests are passing.