Replace implicit bool cast explicit empty() method

In C++11, we could use an explicit bool operator instead,
but that is not widely supported by compilers,
and the bool cast was not used outside of virtual.h anyway.

Fixes #153.
Add an internal augmented ab tree
Implement iterators for the btree
Add index and leaf functions
Add full ctor and fix an augmentation bug
Add extra tree tests
Add find method
Improve augmentation test
Use tpie assert