WIP: Reorganize plugin

This Pull Request addresses the following issues:

- Stop anyone from listing the plugin subfolders by adding an `index.php` file.
- Stop anyone from executing a script directly by checking if a WordPress admin constant is defined

In addition to that, it attempts to address the fact that the main plugin file was bloated with disorganized  procedural code by doing the following:

- move all plugin functionality to a dedicated class, and only keep the strict minimum in the main plugin file: instantiating an instance of the plugin class, the activation/deactivation hooks.

- move all the action / filter hooks into an init method called on `plugins_loaded` except for the events that need to be fired earlier.

- organize functionality into class methods.

The desired outcome is to have cleaner and more organized code.

TODO:

- [ ] Check activation hook function accessibility, should `activate`, `deactivate` functions be moved into the plugin class?