Part 18: PluginVersion Changes

+Improving PluginVersion.cs to versioning:
+changed parameter list of  VersionatedContainer.Invoke() to a array of
struct format.
+fixed the compiling error in VersionatedContainer.Contains() method.
+Improved PluginTemplate to clarify the restrictions and usage of many
methods and constructor.