Lots of changes to main.py: - Rework Input class to not be a dict - this changes the structure a bit, but doesn't mean less usability - Also change dict(input) to input.__dict__ in plugins/log.py to be compatible with that change

- Change the complicated double-negative autohelp statement to one that makes more sense
- Add input type strings to all function documents
- Add a more complicated argument checker for plugin functions. Supports new and old format