Support 'native' ATen functions with Tensor, (base) Type, NS impls.

This adds the ability to specify 'native' functions in NativeFunctions.h and specifies
'split' and 'chunk' in this manner.  The function arguments, returns, variants, etc. are
specified as if they were processed via other parsing mechanisms (e.g. cwrap_parse) with
the following additional parameters:

type_method_definition_level: this allows one to specify that the type method should
be defined at the 'base' type level; this is because in the case of 'split' and 'chunk'
(and probably most/all other native functions that don't directly dispatch to TH/THC)
we don't need type-specific implementations.  Currently it is enforced that 'base' is
specified for native functions, but this is easy to remove later.

type_method_definition_dispatch: this defines the function to dispatch to.  For split,
this is at::native::split; this is just to avoid having a magic namespace and allowing
one to dispatch to a function with a different name.
7 files changed