New plugin API

Goals of update THOPluginProtocol implementation:

1. Update all method names to have the name fit their actual purposes.
2. Add additional, critical features that were previously difficult to
handle without going through a lot of work.
3. Keep the old API calls but also deprecate them to allow backwards
compatibility for now.

The changes were more aesthetics (e.g. name changes) but still paving a
way for something better.