BugFix: Make bidirectional iterators work.

TreeSet was returning Iterator<V> for iterator and reversed, which didn't
break the contract with Iterable<V>; however it should have been returning
bidirectional iterators, which was clearly not working.

Added tests for noraml iterators as well as new from() iterator.