Instead of trying to make open arrays look like arrays (which they aren't,
they just look like them), I decided to call them "slice types". As a result
they have value semantics, and one can really talk about what they really are.
Note:
- There are lots of missing details
- There are probably lots of mistakes