Abstract tree operation

Introduce LEFT and RIGHT that fullfills ~LEFT == RIGHT and ~RIGHT ==
LEFT then abstract tree operations by specifying operation direction as
a method argument.

It introduced 10% runtime performance drop of insert/delete but it's a
good deal for maintenanceability.