Support binaries.

```erlang
f :: () -> <<_:Integer, _:_*OtherInteger>>
f()= <<42, 3:2, g():(h()), 1+2:3/ba be bi>>
```

They are mostly the same as Erlang's, except…
* that you can write more complex expressions in the lhs of binaries' `:`, such as `g()` or `1+2` here.
* binaries' optional types can't be separated using `-` (because of the greediness of atoms' regexp), hence: spaces.