[WIP] Refactor DependencyGraph

Note that this is still work in progress.

- [x] DependencyGraph stores nodes in a list, where position of nodes is it's address (or index). In a situation when a node depends on an unseen node this is problematic (so variable `temp` was created to deal with this problem).
- [x] `input_` for `_parse` can be either a string (the old behavior) or an iterable of lines (so it's possible to use DependencyGraph to parse a large corpus, for example ukwac).
- [ ] I'm not sure whether `remove_by_address`, `get_by_address` and `contains_address` are needed. They duplicate dictionary API.
- [ ] `right_children()` should return the list of children, computing the length of it is trivial.
- [ ] Maybe, it makes sense make `triples()` to return node, not just a word, its head and a ctag.
- [ ] Tests don't cover all the functionality, I'll try to cover it as much as possible.

In general, the PR is not ready yet, I might change it a bit: restructure the code, write more tests and documentation.
self is a dictionary, so the order of the keys is not determined, I use `sort` to make sure that the order is always the same.