Add copy constructor to Branch class

Signed-off-by: Chris Larsen <clarsen@euphoriaaudio.com>
Add copy constructor to TreeRule

Signed-off-by: Chris Larsen <clarsen@euphoriaaudio.com>
Modify Tree.storeTree() to write only the tree definition and return a Boolean
Modify TreeBuilder.processTimeseriesMeta() to call the collision and
not-matched flush calls on a tree instead of storeTree() since processing
will never modify a tree's metadata.
Add copy constructor to Tree
Rework TreeBuilder.processAllTrees() to cache the tree definitions in a thread-
safe manner so we keep scanner calls down. It will refresh the list every 5
minutes when processing real-time TSMeta entries
Remove spurious System.out.println from TestTree.java
Add root branch cache to TreeBuilder to speed up the real-time tree generation
calls so that they don't have to fetch the root for every call.
Renamed TreeBuilder.loadRoot to loadOrInitializeRoot(), made it a static call,
modified it to load or set the cache and return the root branch

Signed-off-by: Chris Larsen <clarsen@euphoriaaudio.com>