KT-4581: Add add/remove unnecessary label inspection/intention

This PR implements inspections for removing either an unnecessary label from a label-qualified expression or an unnecessary supertype parameter from a super expression. Also add intentions that do the reverse; i.e. add an explicit label or supertype parameter when possible.

The commit 'Make JetSuperExpression not implement JetStatementExpression' introduces a slight regression in the smart selection code, now for `super@Foo` it breaks up the label part and presents both `super` and `super@Foo`. However, it's currently broken even for cases like `super<Bar>` and also shouldn't allow selecting just 'super' from `super.foo()`. So I think all of those smart selector+super issues could be fixed at the same time in a different issue.