Changed state to a standard python dictionary, this allows more flexibility.

Added a Version function and VersionInfo namedtuple for keeping plugin versions in. A string is too restricted to use here.