feat(packets): add conditional list index attribute
feat(packets): allow multiple packet headers
feat: split packets definitions into separate assembly