Renames custom_model_1d to just custom_model and moves it to modeling.core, in the process updating it to support creating custom N-dimensional models.  custom_model_1d is still kept for backward compat but will be deprecated.
Fixed doctest to work on Python 2.6
Updated the new model docs to better reflect the updated custom_model implementation.
The trick of using super(self.__class__, self)... actually blows up for subclasses, because then self.__class__ is not longer the correct base class in the super chain (in fact it leads to an infinite recursion).  Turns it it suffices to attach __init__ and __call__ to the class after it has been created.  Adds a test to ensure that this works.
Now that #2836 has been rebased on top of #2849 it no longer needs to include its own copy of the make_func_with_sig utility.  I also renamed make_func_with_sig to make_function_with_signature as suggested here: https://github.com/astropy/astropy/pull/2835#discussion_r16432378  Previously I thought the unabbreviated name was a little on the long side.  But on second thought I prefer the clarity here.
Per the commentary at https://github.com/astropy/astropy/pull/1763#discussion_r16330036 I made custom_model able to take arguments when used as a decorator as well.  I also clarified in the documentation that it can be used either as a decorator or a normal factory function.
Added a changelog entry
Should use six.callable
Fix syntax error on Python 2, where keyword-only arguments are not supported
Merge pull request #1763 from embray/modeling/custom-model

Implement ``custom_model_2d``