Refactoring of message, identifier and presence

As they are mainly data object, make them use properties.

Also implemented a smart deprecated decorator that calls the new version of the deprecated method with a warning.

It triggers a flood of internal warning, they'll be fixed on another PR.
Since we're refactoring this anyway, I wonder if it might be a good idea to change the `typ` argument here to `type_`.

Pep8 recommends appending an underscore to the names of variables when they clash with keywords, existing types etc. I personally find `type_` more clear than `typ`. What are you thoughts on this?

This goes for a few more places too, I'll mark them as I see them.