Add CachedBuilder<T> that will cached the build() until the cache is invalidated
Fix the ClassificationTree implementation