Linearized time taken by HierarchicalSplit.split()

HierarchicalSplit.buildTree was using an ArrayList for storing
Nodes of the tree. This was causing huge overheads especially
upon removal of first element.

This has been fixed by replacing the ArrayList with a LinkedList

development.hierarchical_split.Test class renamed to TestClass
    - Added a simple timing test