Modularity inside the plugin hierarchy

Separated the Plugin and its component into two files, renamed Plugin into ObeyPlugin