Optimizations in chunk tree generation

I've optimized a bit the tree generation in new chunks:
* Now it uses recursion rather than stacks. This allows a much faster execution, as it does not have to build the full axiom at start, which is a slow process.
* It has a dedicated object to store rules. This reduces the lookup time by a factor of two, as it does not have to get the probability from the "probabilities" object and then get the axiom from "ruleSet".
* Use radians directly, so there are no conversions from degrees to radians.
* Build AxisAngle4f directly using floats, without an intermediate Vector3f.