more complete QgsMessageBarItem

inherits from QWidget to allow further editing.

The global idea is to have a better control on message once they are created and also while they are shown.

The structure of a message is kept coherent: it is made of a title, text and widget. All of these are optional.
It also contains the info of duration and level.

There are very minor API change:
* QgsMessageBar::createMessage now returns a QgsMessageBarItem instead of a QWidget. This won't be a problem in python
* I removed 3 of 4 of the createMessage methods. I kept the only one used in plugins on the repo as of today
* pushWidget now receives QgsMessageBarItem and not QWidget. Again no problem in python.

pushWidget with level and duration has been kept for API compatibility and it resets the item's properties.