PYSIDE-217,224: Improved 'Value' type wrapper registration

This commit works around some bugs where multiple/incorrect
wrappers were registered for some types:

- In cases where the first field of a class was itself a Value
  type instance (instead of pointer), both the parent
  and child wrappers had same cptr address, causing confusion
  in retrieveWrapper. Previously, this was worked around by always
  creating a new wrapper for all Value type fields on every access,
  causing leaks. We now check for colocated child wrappers and
  return that instead of creating new wrapper, so each Value type
  subfield need only have one wrapper.
- Some cases of incorrect wrapper registration due to an existing
  wrapper which shiboken could not figure being deleted are fixed,
  specifically cases where the newly registered wrapper is from
  object created in python or owns its wrapper.
- Do not release incorrect wrapper in case of address reuse
  by checking that the registered wrapper is indeed the wrapper
  being released.

Change-Id: I019c078566c4b9b90e63c5d991e2e372d39c632a