sparse vectors increase tree creation speed by 400x

This is a tiny change to allow the usage of sparse vectors (http://en.wikipedia.org/wiki/Sparse_vector) and it has huge speed implications. To demonstrate these I've created SparseVectorTest.java if you run it you will get something like:

Training with sparse vectors took: 4 milliseconds
true=0.503 false=0.497 
Training with dense vectors took: 1650 milliseconds
true=0.503 false=0.497 
Running this test 2 very different trees are built, as you are supplying 2 very different data sets. TreeBuilder will use a default value of 0 for numeric attributes if no value is present. To verify this revert your change to HashMapAttributes and run your test again, I would suspect you will see similar build times and models for the sparse data set. By doing this in TreeBuilder we don't force all PredictiveModelBuilders to behave this way, also we can use a different default value for a Categorical attribute.