Rewrote furnace recipe parser

* Fixes #110
No need for this assert, this is guaranteed by the C++ / STL.