Add and improve warnings

* Add tags (labels) for warnings. could be used by Jenkins or other tools to group warnings
* Add second-level warnings, called "advice", used to limit warning inflation a la java
* Add new warnings
  * missing doc
  * unread local variable
  * useless empty init
  * useless attribute type <- was already present, but made a advice, instead of a warnings.

Close #722
Second-level warnings are warnings that ~~has~~ could require investigation.