Added HierarchicalMultilabelModel class

In my quick research I found:
* `set_labels` is not virtual, so we can't use it without modification
* `init` already knows about the labels and the taxonomy vector -- why not set `m_num_classes` there?
* `taxonomy.len == m_num_classes == multi_labels->get_num_classes()`

My conclusion:
We should set `m_num_classes` in `init()` and add checks that above equation holds.  But we shouldn't modify `m_num_classes` in `train()` -- rather die if it doesn't match.