enforcing that all plugins are wrapped in proxies

- making sure all plugins in tests are wrapped in a virtual proxy
- adding instanceof to the plugin interface since Java's instanceof wont
  work with virtual proxies
- adding the abstract classes for each plugin type so users dont have
  to write the instanceof method