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. 
Although it's never clean up, I think it's a minor issue since most cache entries come from system, never changing assemblies, which is likely to be used in every solution. So, permanency of this cache could be seen as an advantage rather than a bug. I think we should let it be as it is.