Lots of changes to :unused-ret-vals linter

Split it into :unused-ret-vals and :unused-ret-vals-in-try, because
inside of a try block it could be that the function is being called
explicitly to see whether it throws an exception, e.g. inside of a
(clojure.test/is (thrown? ...)) expression that macro-expands its body
to a try.

Also make a special case for clojure.core/apply, so that the warning
is based upon the function given as its first argument, not on apply
itself.