'switch on type' doesn't work with bit-packed integers
Consider the following data description:


```ksy
meta:
  id: foo
  endian: le
  
seq:
  - id: flag
    type: b1
  - id: token
    type:
      switch-on: flag
      cases:
        true: b7
        false: b31
```
What I expected:
- Read flag bit (at bit pos 0). If 1 read up to the full byte, if 0 read up to the 4 bytes. 

However, the generated code aligns io, thus dropping bits 1-7. 
This is what I get
```python
    def _read(self):
        self.flag = self._io.read_bits_int_be(1) != 0
        self._io.align_to_byte()
        _on = self.flag
        if _on == True:
            self.token = self._io.read_bits_int_be(7)
        elif _on == False:
            self.token = self._io.read_bits_int_be(31)
```