Curry errors

Previously curry hid a number of errors in user code.  In particular any `TypeError` was assumed to be the cause of not-enough-arguments.  Now we use the `inspect` module to determine the number of required args ahead of time.