Rust bindings

Ah, an idea just struck. We could support both:

class vtkFoo {
public:
  // Named methods.
  int rename_method()
    VTK_WRAP_OVERLOAD_NAMED();
  int rename_method(int port)
    VTK_WRAP_OVERLOAD_NAMED(_with_port);

  // Argument selection.
  int args_enum(int port)
    VTK_WRAP_OVERLOAD_ARGSETS(ArgsEnum) // names the `enum`
    VTK_WRAP_OVERLOAD_ARGSET(Port); // names the variant for this overload
  int args_enum(const char* addr, int port)
    VTK_WRAP_OVERLOAD_ARGSET(AddrPort);
};

Either supports adding new overloads to existing overloaded methods. The former supports adding new overloads to existing methods.

Java could use the former (and probably mangle method names using the latter data) as well.