implement lazy defaults

    package Foo
    
    use Class::Tiny qw/ baz bam /, {
        foo => 42,
        bar => sub { ... },
    };

Tests pass, but it relaxes some checks on attribute names.  I don't think it matters, but I want to add some more tests before I merge this branch.