First pass at experimental optimization, -D js_flatten.

It generates the class hierarchy as "flat" as possible without using
nested objects. This allows JS minifiers to compress classes down to one
letter, and seems to run quite a bit faster too:
http://jsperf.com/class-declaration
Flatten static method and enum references.
Under js_flatten, all statics need to be explicitly defined.
Generate dotted aliases for static fields.

...this static field flattening probably isn't going to work out.
Unfortunately it doesn't work so great with Dynamic, even with this
commit. I'm not sure how to handle code like this:

	class Evil {
		public static var staticMember :Int = 1;
	}
	var evil :Dynamic = new Evil();
	evil.staticMember = 2;

Package flattening on the other hand has been pretty solid, and is more
bang for the buck anyways.
Only flatten packages and not static fields.
Replace underscores to prevent collisions in flat paths.
Merge branch 'js_flatten' into development

* js_flatten:
  Replace underscores to prevent collisions in flat paths.
  Only flatten packages and not static fields.
  Generate dotted aliases for static fields.
  Under js_flatten, all statics need to be explicitly defined.
  Flatten static method and enum references.
  First pass at experimental optimization, -D js_flatten.