Resolve unopened namespace

It's not ready for merging yet. 

* [x] Add tests for generating `open` statements
* [x] Show the smart tag on types in the proper positions only
* [x] Support shortened attribute names (`SerializableAttribute` should be found by simple `Serializable`). Require change `Ast.isEntity` to `Ast.getEntityKind` and return `EnityKind.Attribute` for attributes. 
* [x] Support DU cases
* [x] Suggest only attribute types for unresolved symbol in attribute position
* [x] Respect `RequireQualifiedAccess` attribute on modules and DUs
* [x] Filter our private types and internal types declared in external assemblies
* [x] Support module functions / values
* [x] Cache entities
* [ ] Support `InternalsVisibleTo` attribute 

Please, review and test it. 
I think this language feature exists for exactly this scenario: we want to treat a bunch of unrelated types with a common member in a generic way (duck typing).

However, the resulting syntax `hasAttribute<_, xxx>` is ugly, so I reverted the function.