optargs 0.1.2

Easily create macros for functions with optional arguments
Documentation
# Future
- positional parameters (potential conflict with naming)
- argument forwarding (*args, **kwargs)
- allow arbitrary ordering of parameters (potential conflict with named + positional params )

# v1 
- [x] optional functions with named parameters with `fn!()` syntax
- [x] optional structs with `Struct!{}` syntax
- [x] use of const generics over the typed-builder crate
- [ ] builder structs with `Struct::builder().build()` syntax
  
n.b.: Place some restrictions on ordering and naming requirements to potentially lift them in the future in a non-breaking fashion.

For structs:
```rust
// enables the builder syntadx
#[derive(optbuilder)]
struct Example {}

// enables both the builder syntax and macro caller syntax
#[derive(optbuilder, optmacro)]
struct Example {}
```

For functions:
```rust
#[optfn]
fn example() { }
```