Add tmp/ to .gitignore
Demoronise plugin loading a bit

* Plugin loading was unnecessarily complicated: it had two
  different concepts, plugin and plugin object, but that was just
  confusing and didn't help in any way.
* Make the "plugin" an internal implementation detail, and make
  requirePlugin return a final plugin object that can be fed to
  registerPluginObject directly.
* Change relevant tests to have proper plugins, change a bit the
  way we check if the right plugin is being loaded.
First implementation of a fixture loading module