gi: Refactor resolving prototypes in GIWrapperInstance constructors
Refactor GIWrapperInstance/Instance to take Prototype in the constructor.
This is needed for class-based instances where the JavaScript prototype is not the same as the native Prototype object.
Preparation for !700 (merged), !509 (closed)
Edited by Evan Welsh