Create 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.
Does it make more sense to store this as an actual python list? then if we need a JSON string, just call `json.dumps()`? I'm not sure...