Add automatic help and Documentation

Both are related. The help needs to flow from the relative classes and the documentation is just a pretty way of presenting the help. its a big chunck of code, so I'll sprinkle some comments to ease the review. I did it against joel/devel because borevitz/next has a syntax error ATM.
These should be turned on when we solve the Json issue.