Add -vgc switch

The following known allocations are intentionally not handled:

* AssertExp
* CmpExp
* AssignExp: Calls _d_arrayassign
* Hidden function errors: Are already deprecated
* SwitchErrorStatement

All these cases only allocate by throwing exceptions
and disallowing them would impact user code a lot. In
order to really solve such issues we need some way to
throw exceptions without GC-allocation.

Also not handled are indirect calls to user-defined
functions which may allocate (calling postblits in
array assignment for example). As this commit does
not provide a way to mark a function as @nogc there's
no way to know if such functions actually allocate.

These indirect calls to user defined functions must
be revisited when a @nogc attribute is introduced.
Merge pull request #1886 from jpf91/vgc

Implement nogc framework (warn about GC allocations)
Supply scope for addMember call
[Refactoring] AttribDeclaration::createNewScope
[Refactoring] AttribDeclaration::newScope
Generalize addMember and importAll for derived class of AttribDeclaration
Generalize semantic2 and semantic 3
+0 Basic changes

- Add IgnoreImportedFQN, IgnorePrivateImports, and IgnorePrivateSymbols
- Add dst to the first parameter in Package::resolve, and reorder parameter list
- Rename Module::mod to aliassym
- Move Import::addMember position
+work sample test,a,b
Enable public import (doesn't work because addMember does not set sc->explicitProtection)
OK for public import merging (by refactoring)
+stash Allow b.x2.put in test
+
fix Issue 313 - [module] Fully qualified names bypass private imports
(compilable 313)
Support local import (testimport2.d)
Mask Import::toChars
+0
+2? enclosingPkg
+2x