Add a 'after post_generation' hook to Factory.

Use it in DjangoModelFactory to save objects again if a post_generation hook ran.

Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
Use extracted argument in PostGenerationMethodCall.

This changeset makes it possible possible to override the default method
arguments (or "method_args") passed in when instantiating
PostGenerationMethodCall. Now the user can override the default
arguments to the method called during post-generation when instantiating
a factory.

For example, using this UserFactory,

    class UserFactory(factory.Factory):
        FACTORY_FOR = User

        username = factory.Sequence(lambda n: 'user{0}'.format(n))
        password = factory.PostGenerationMethodCall(
                'set_password', None, 'defaultpassword')

by default, the user will have a password set to 'defaultpassword', but
this can be overridden by passing in a new password as a keyword
argument:

    >>> u = UserFactory()
    >>> u.check_password('defaultpassword')
    True
    >>> other_u = UserFactory(password='different')
    >>> other_u.check_password('defaultpassword')
    False
    >>> other_u.check_password('different')
    True

This changeset introduces a testing dependency on the Mock package
http://pypi.python.org/pypi/mock. While this is a third-party dependency
in Python 2, it is part of the Python 3 standard library, as unit.mock,
and so a reasonable dependency to satisfy.

Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
Let mock source be chosen by Python major version.

This should provide better Python 3 compatibility, since mock is in the
Python 3 standard library as unittest.mock.

Conflicts:

	tests/test_declarations.py

Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
Cleanup argument extraction in PostGenMethod (See #36).

This provides a consistent behaviour for extracting arguments to
a PostGenerationMethodCall.

Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>