with_setup: let funcs receive arbitrary args and kwargs

Hello,

I created this PR and would love to know if you're interested in merging it.  Here's what I've done:

- Calling ```nose.tools.with_setup(..., params=True)``` allows the setup() function to return args and kwargs.  The decorated test and teardown functions can use some or all of those args and kwargs as they choose.
- Includes tests and documentation.
- This PR is adapted from this gist: https://gist.github.com/garyvdm/392ae20c673c7ee58d76

For example:

```
    def setup_func():
        return ['arg1', 'arg2'], dict(kw1='kw1', kw2='kw2')

    def teardown_func(arg1, kw2):
        print('teardown received arg1=%s kw2=%s' % (arg1, kw2))

    @nose.tools.with_setup(setup_func, teardown_func, True)
    def test_a(arg1, arg2, kw1):
        print('test_a received %s %s %s' % (arg1, arg2, kw1))

```