Accept callables for config validation (#223).

It's now possible to pass a callable as a validity parameter to a
configuration.Property. (A string is still interpreted as a regex.)

Example when creating configurations:

    >>> with configuration.create() as cfg:
            cfg.a.validity = lambda v: v.startswith('poo')
            cfg.a = 'poobear'