TAO: explicit type annotations

Note: This is subject to future work. Errors, ambiguities, and omissions are to be expected.

Possible conventions for type annotations:

name`: type [value]        `; before value, prefix
name        [value`: type] `; after value, postfix
name`: type [value`: type] `; both -- might be useful for large structures

Examples

{
    "names": ["Jack", "Kyle"]
}
`: dict [
    names`: list [[Jack][Kyle]`: list]
`: dict ]
`: set [
    [potato]
    [tomato]
    [zucchini]
    [courgette] `; oops
`: set ]