Fix TokenizedStorage to store values with alignment
TokenizedStorage stored values packed directly one after the other,
which broke alignment requirements. This is not well tolerated by some
architectures. This patch fixes TokenizedStorage to respect alignment
requirement of stored values.
- TypeForNumber got a new field Align for the alignment requirement
- Alignment requirement of the first type in a Token can be queried by alignmentOfHeadOfToken()
- TokenizedStorage calculates offsets() considering not only the size but also the alignment requirement of the type of each stored value; Arena is allocated accordingly.