allow defaults to be bound to instance

and introduce a decorator syntax that makes this easy