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. 
Question: do we ever remove entries from this cache? Do we clear the cache in any situation? If not, it's a potential memory leak in principle.