strict mode support

Currently, `argumenter()` does not work in strict mode, because of the use of `Function.arguments`, which will throw an exception.

- `argumenter()` now works in strict mode.
- in strict mode, you must pass arguments to `argumenter()` instead of the function itself.
- this *is* backwards compatible, and you can still pass a function to argumenter() if working in non-strict mode.
- caveat: in strict mode, not passing a context to `done()` will *not* execute the callback in the context of the function itself.  this is impossible, since we cannot pass the function to `argumenter()` and thus have no reference to it.  if you want the function to be the context, then pass it to `done()`.  this was undocumented and seems like kind of an edge case, so I think it's probably OK.
- did a little bit of cleanup
- duplicated the tests to all run in strict mode and again in non-strict mode.  there's probably a better way to do this, but I didn't have anything off the top of my head.

great module.  exactly what I was looking for.