Optional fields
Here is pseudocode taking in account templates #135, inlining #88, default values #271 and sizeof #84 proposals
```yaml
type:
  optional:
    templates:
      - type # the type to be wrapped
    params:
      - id: default_value
        type: type
    seq:
      - id: value
        type: type
        if: should_parse
        inline: true
        default: default_value
    instances:
      should_parse:
        value: lea() + sizeof() <= sizeof(_parent)
```

This code should parse a field if there is enough space for them in a stream. This kind fields must be in the end of structs. Putting them in the middle is UB.

Usage:
```yaml
seq:
  - id: a
    type: b
  - id: c
    type: optional<u8>(0) 
```
