Refactoring and cleanup

De-signalify sending and saving messages in favor of completion blocks.

Re-define a macro for forwarding KVO notifications.

Document some more things.