Report privacy errors on variable/property declarations and also emit import declarations that get used to defined visible type

This change contains two changes
1. Report errors on variable/property types if they aren't accessible
2. Emit the import declaration asynchronously if the alias declaration that is not exported is needed to define the type
3. Report errors on parameter type and return types of functions and accessors