Access origin

This will also refactor the plugin related tasks to its own class.
Also, it fixes a bug when parsing the minor version header.
I think we can avoid the isEmpty and isNull + be more consistent if we'll have to separate functions:

``function getPlugin()`` -- simply return $this->plugin;
``function getPluginKey($key)`` -- where key is required.