* Binarytree version 3.0.0 silently placed a restriction allowing only integers as node values. This was to avoid edge cases that couldn't be handled gracefully (e.g. user-supplied values without random generation or comparison). Pretty printing the tree was also an issue when the `__repr__` of these custom values were too lengthy (tree rendering would break). There were many other technical issues with accepting custom values (which, by the way, is why `binarytree.setup` function was removed). Hopefully in the future, all these challenges are solved so `binarytree.setup` method can be added back again. In the meantime, integers were thought to be enough for the purpose of practicing tree algorithms. But the restriction seemed unnecessarily strong, which is why in this version, support for all number types (e.g. int, float, decimal.Decimal) have been added back.
* Refactored exception names and messages for consistency and clarity.
* `Node.__iter__` now yields node instances instead of node values (see [here](http://binarytree.readthedocs.io/en/master/specs.html#binarytree.Node.__iter__) for details).
* Added new method `Node.values`, which returns the [list representation](https://en.wikipedia.org/wiki/Binary_tree#Arrays) of the binary tree (i.e. node values in [level order](https://en.wikipedia.org/wiki/Tree_traversal#Breadth-first_search)). This is essentially the replacement for the old `Node.__iter__` (see [here](http://binarytree.readthedocs.io/en/master/specs.html#binarytree.Node.values) for details).