[OHAI-412] Split Ohai::System responsibilites into 2 classes

Added an `Ohai::DSL::Plugin` class that handles the plugin DSL, so that `Ohai::System` just handles controlling the "ohai run".

This is a pretty big change, but breakage should be pretty low. One use pattern that will break (or, bug that will be fixed) is defining a method in one plugin and attempting to call that method in a different plugin. The uptime plugins used this technique, so they had to be modified to use mixins instead.