Add a lint for non-exported local types in visible type signatures.

Except for traits, to allow them to be used as closed type-classes and/or PIMPL-style polymorphic trait objects

```rust
struct Private;
pub fn warning(x: Private) {}

trait Priv {}
pub fn ok<T: Priv>() {}
```