Add support for balancing datasets so there are the same num samples for each type
Refactor learn.py into preprocess function
Refactor datapoint.balance to name function groups not group
Make plant.load_all use an intermediate pickled file to speed up loading
Fix learn.py random shuffle behaviour
Add some support for simple learning in learn.py