Alternative proposal for grouping exported and local declarations

This is another version of grouping exported and locals declarations (originally proposed as #37).
Implementation notes: 
- exported and local declarations can co-exist within a same symbol (similar to #37)
- exported node has a link to a local symbol
- local symbol is used to check if exports agree on all merged declarations (within one local symbol)
- additional extra check is run on export symbol for functions (to detect duplicate implementation\mismatched ambients) 
Isn't this overly restrictive? Doesn't this mean that if

1. a type is declared as a non-exported interface,
2. a module of the same name is exported, and
3. the type is extended, again without exporting

then we will complain?