STYLE: Use properties in CreateExtensionDialog

Change CreateExtensionDialog classes to subclass object, which is needed
to give them properties (they weren't originally as there seems to be
some problem if a module's primary classes derive from object). Change
accessor methods of the same to Python properties, which are slightly
more convenient and "more Pythonic".
ENH: Create editable tree widget

Create utility widget class EditableTreeWidget, for extension wizard
module. This will be useful for editing extension metadata that takes
the form of lists, e.g. contributors.
BUG: More unicode support fixes

Add support for conversion-to-unicode to CMakeParser. Fix str conversion
to more explicitly avoid having unicode in the results. Add encoding
detection and support to ExtensionProject. This should make it possible
to work with non-ASCII unicode in an ExtensionProject.
ENH: Make ExtensionProject.project writable

Add a setter for the ExtensionProject.project property, allowing users
to change the name given to the project() call of a corresponding build
script (CMakeLists.txt).
ENH: Implement editing of extension metadata

Create dialog for editing extension metadata and hook up to necessary
bi-directional manipulation of the same in the extension project and
description classes.

Issue #3603
ENH: Use I-beam cursor for information fields

Tweak the read only line edits used to show information about the
currently selected extension in the Extension Wizard module to use the
I-beam cursor, to make it more obvious that the text can be selected.