Handle non-plainobjects

Having an object which has a constructor other than Object is perfectly valid.
You just don't want to try and reparameterize an array or a function.
Handle airity 1 case
arguments.length instead of checking falsiness
Merge pull request #5 from apechimp/arg-munging

Handle non-plainobjects, refactor makes arity explicit