Improved Plug bindings with a new PlugClass helper class.

This matches the way other bindings are done, and removes the need to remember to use a nasty macro to bind the various Plug virtual functions.
Added test demonstrating ArrayPlug working with python child plugs.
Merge pull request #975 from johnhaddon/plugBindingBackport

Plug binding backport