Refactor public messages

Now it gets the public messages by doing Message.public_objects.something instead of Message.objects.public()