Formatter work

I'll leave this here as I will probably not do any more work on it. 

In order to work on more of phobos I added the ability to use cstyle array declarations, since these appear in some phobos unit tests. Can be removed fairly easily. 

Currently, it will do AST->source for all of phobos (tested by formatting then compiling and running unittests) except:
std.math             // uses asm      
std.conv             // throws an exception, didn't investigate
std.range.d        // unsupported alias syntax
std.regex.d        // unsupported alias syntax
std.traits.d         // alias int GetterType() @property; -- unsupported
std.typecons.d   // alias string F3(); -- unsupported

I relied on unittests to catch bugs, so untested code might still be malformed. Most of the unsupported alias syntax problems are bugzilla issues related to the spec, which you have opened.  

Non-ddoc comments are a problem (they are not output). Not sure how to solve that.