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