Implement Statement::toIR in terms of a visitor interface

Discussion in #2074 hasn't gone anywhere in the last four months, so hopefully this will start things up again.

This is basically the same thing as the pull @IgorStepanov did, but with statement and one pass converted to make things a little clearer.

This pull demonstrates what I hope to achieve:
- Being able to add a pass without modifying the frontend headers
- Putting all the related methods in the same class, so they can be in the same file in the D port

@ibuclaw @klickverbot @redstar Does this look right for non-dmd backends?

@WalterBright @andralex What are your objections and how can we overcome them?

@dawgfoto Could you port this code to your version of visitor so we can see how they compare?