Beminfo 366

* Support new library data format with any numbers of docs or custom nodes
* Large code refactoring for data compiling.
* Make fat models that can build their own childs
* Fix router middleware to support current for custom nodes
maybe it'd be more readable if you change `conditions` into something else to avoid `conditions.conditions` in the code?