[refactoring] move protection to Dsymbol

Protection attributes are applicable for most D symbols, defining
it in descendants results in code duplication. Better to keep it in
base by default and process exceptions.
[refactoring] turn PROT into struct and rename it

Makes it possible to easily add additional protection
information and differentiates between protected imports
and actual attribute.
Support 'package(ident)' syntax (parser/AST)

This commit adds capability of parsing and resolving
explicit packagedefined for package protection attribute. Adjusting
acess checks to use it will be done in separate commit.
Fix #2529: package protection + sub-package

Fix relevant issue by allowing to explicitly define
package to bind protection attribute to. Defaults
remain unchanged.