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. 
To be honest, I'm against the use of member constraints except few rare cases. There are 5 types inherited from `FSharpSymbol` having this property, so it's fine to use type test here.