Add AST dump visitor
Lets create a new visitor to do an AST dump this dump will output any AST item to be as close to real rust formatted code as possible.
So for example we can send in an AST::Function and get back:
fn function_name() ... { ... }
This visitor should keep a context for indentation, and be used to take over our current AST dump which is abusing as_string which is not the right place to do this as it loses the context information of the indentation levels.
We should give the visitor an output stream (std::ofstream - yes one of the few times streams in C++ are good) to write the dump to. This lets us give any kind of stream so we are not tied to abusing std::string which will not scale very well.
NOTE this issue will super seed the old: #7
Since the goal is to dump valid rust code, we should also think of a way to test that we produce valid rust code. I think this might be something for the testing project as it might be a little hard to do with dejagnu?
This is already done within the compiler and simply needs to cover more cases as with go