Refactor vtkWrapPython into smaller source files.

Because several thousands lines of code is too much for one file.

Change-Id: Ib3af0f2153fddc3f593fd90913bb3408944062f6
Wrap enum constant members for non-vtkObject types.

Change-Id: Id9b7b1659b07103ebb8dd80df02cccd56e5ab6a0
Add an enum type to the python wrappers.

Any enum types that are encountered will automatically be wrapped
as integral types.  This is true for enum types defined in the global
namespace, and enum types defined within a wrapped class.  Other
namespaces are not yet supported, because the python wrappers do not
yet wrap C++ namespaces.

When a class method has an enum parameter, and if the enum is a member
of the class, then that method will perform type checking on the enum.
Class methods that require enums that are not members of the class will
not be wrapped (in future versions of the wrappers, they might).

Change-Id: If38391de8a1a66eb255ddf83a72916af6d81dc78
Fix two previously undetected wrapper bugs.

The vtkParseHierarchy class was not detecting enum types, and the
vtkWrapPython_PythonicName code for converting mangled type names
to pythonic names was not able to handle namespaces.

Change-Id: If5c044eca741c12a387d150a764b65cf7085a4f9
Wrap namespaces in python.

For now, namespaces can only be used to define constants and enum types.
Any functions or methods in the namespace will not be wrapped.

Change-Id: If876e77f814630aa4cb0336579826fd9b58c66f2
Allow use of all enum types as method parameters.

Previously, enum types could only be used as method parameters if
the enum type was defined in the same class as the method.  This change
removes that restriction, by using the hierarchy files to figure out
what enum types will be wrapped across the whole project.

Change-Id: Ia44272a341312f984d05ed54ae3318c12a2fe404
Move VTK_BUILD_SHARED_LIBS check to generated code.

Any use of vtkConfigure.h from within the wrapper tool code can
lead to incorrect configuration when cross compiling.  This change
moves the VTK_BUILD_SHARED_LIBS check from the wrapper tool code
into the generated code.

Change-Id: Ie80075bf107aa7635767488ed9f87b0aa3590c72
Wrap constants more efficiently.

Sometimes header files contain a large number of constants, and
the wrappers were generating a function call for each and every
one in order to convert them into python values.  This new code
stores the constants in static data structures when possible.

Change-Id: Id59c8448be154647ff349b43d958871b0f18af69
Avoid creating duplicate wrapped namespaces.

In C++, the contents of a single namespace can be defined in more
than one header.  We must allow for this when wrapping namespaces
in python, by checking if the namespace has already been created.

Change-Id: Ib64d0fad648cf597c59f3a67edcb9a165594fbf6
Only wrap namespaces that have useful contents.

Namespaces are often used just for forward declarations of third
party classes, e.g. boost or even std.  We don't want to wrap these,
we only want to wrap namespaces that are part of our API.  For now,
that means wrapping namespaces that define useful constants.

Change-Id: Icdd111c2e8b3c9031cde1a5409a74f3d09767e69
Update the readme file for new wrapping capabilities.

Change-Id: Ifc1563d7159b892e078ff2589dff6a5e30e50c62
Merge topic 'refactor-wrap-python' into master

f7475425 Update the readme file for new wrapping capabilities.
e13d9aea Only wrap namespaces that have useful contents.
3e100545 Avoid creating duplicate wrapped namespaces.
d5cb2382 Wrap constants more efficiently.
a5948d9f Move VTK_BUILD_SHARED_LIBS check to generated code.
67a70a82 Allow use of all enum types as method parameters.
b271e764 Wrap namespaces in python.
57b47954 Fix two previously undetected wrapper bugs.
ba693ade Add an enum type to the python wrappers.
f642f513 Wrap enum constant members for non-vtkObject types.
a73ab651 Refactor vtkWrapPython into smaller source files.