reworked interface for streaming parsing

I changed a lot of things in the way `Bencode_streaming` works, by adding `Bencode_token` (which deals only with "events" in the following type) and combining it with a simple stack parser that reads tokens and builds tree structures. I also added some tests and a few helper functions to `Bencode` itself.

```ocaml
type token =
  [ `I of int
  | `S of string
  | `BeginDict
  | `BeginList
  | `End
  ]
```

A new `Changelog.md` file has also been added.