Allow variable-length strings in structs

Similar to variable-length arrays:

```js
ds.readStruct([
  'strLen', 'uint16',
  'str', 'string:strLen'
]);
```