Allow callable defaults for any sealer

First let me say - great library! :) I've been evaluating it as well as attrs for a while now.

I'd like to suggest a possible feature extension: allow callable defaults, which will let you do things like this:

from datetime import datetime
import fields
class Record(fields.Tuple.Username[str].Created[datetime.now].Revision[long].Active[bool]):
    pass

Using types as defaults IMO makes the code more readable. Also assuming the callable takes no arguments, it allows simple initialization at run-time (like with datetime.now).

It's easy to do that with a simple sealer wrapper, like the one below:

from functools import wraps
from fields import factory, tuple_sealer

def with_callable_defaults(sealer):
    """
    Wraps the given `sealer` to support `callable` for any specified default.
    """
    @wraps(sealer)
    def wrapped_sealer(fields, defaults):
        for field, default in defaults.iteritems():
            if callable(default):
                try:
                    defaults[field] = default()
                except TypeError:
                    pass
        return sealer(fields, defaults)
    return wrapped_sealer

Tuple = factory(with_callable_defaults(tuple_sealer))

What do you think?